如何在linux socket编程中设置/获取套接字RTT?

时间:2015-06-22 11:50:34

标签: linux sockets tcp-ip

我需要在套接字(AF_INETSOCK_RAWIPPROTO_TCP)中设置或获取RTT。

接下来在插座编程中控制此类RTT需要做什么?换句话说,如何找到这样的RTT参数?

2 个答案:

答案 0 :(得分:1)

要测量往返时间(RTT),请编写一个简单的客户端 - 服务器应用程序,其中包含一个节点:

  1. 使用clock_gettime()
  2. 读取当前时间
  3. 使用(已打开的)套接字
  4. 上的write()向其他节点发送消息
  5. 使用read()
  6. 等待消息
  7. 使用clock_gettime()
  8. 读取当前时间

    RTT是两次之间的差异。

答案 1 :(得分:1)

在Linux上,您可以通过getsockopt()调用TCP_INFO来获取RTT:

#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>

/* ... */

tcp_info info;
socklen_t tcp_info_length = sizeof info;
ret = getsockopt(sock, SOL_TCP, TCP_INFO, &info, &tcp_info_length);
printf("rtt: %us microseconds\n", info.tcpi_rtt);