如何在linux socket编程中设置/获取socket RTT?
我需要以套接字(如何在linux socket编程中设置/获取socket RTT?,linux,sockets,tcp-ip,Linux,Sockets,Tcp Ip,我需要以套接字(AF\u INET,SOCK\u RAW,IPPROTO\u TCP)的方式设置或获取RTT 在socket编程中,我接下来需要做什么来控制这样的RTT?换句话说,如何找到这样的RTT参数?要测量往返时间(RTT),请编写一个简单的客户端-服务器应用程序,其中一个节点: 使用clock\u gettime()读取当前时间 使用(已打开)套接字上的write()向另一个节点发送消息 使用read() 使用clock\u gettime()读取当前时间 RTT是这两个时间段之间的差异
AF\u INET
,SOCK\u RAW
,IPPROTO\u TCP
)的方式设置或获取RTT
在socket编程中,我接下来需要做什么来控制这样的RTT?换句话说,如何找到这样的RTT参数?要测量往返时间(RTT),请编写一个简单的客户端-服务器应用程序,其中一个节点:
clock\u gettime()读取当前时间
write()
向另一个节点发送消息read()
clock\u gettime()读取当前时间
RTT是这两个时间段之间的差异。在Linux上,您可以通过使用
TCP\u INFO
调用getsockopt()
来获得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);
#包括
#包括
#包括
/* ... */
tcp_信息;
socklen\u t tcp\u info\u length=sizeof info;
ret=getsockopt(sock、SOL\u TCP、TCP\u INFO、&INFO和TCP\u INFO长度);
printf(“rtt:%us microseconds\n”,info.tcpi\u rtt);
API中没有用于此的函数。只需向另一端发送一条消息,让另一端将其发回,并计时。没那么难。选项会有帮助吗?它不是通过TCP.POSIX.1-2008将gettimeofday(2)
标记为过时而设置的,而是经过测量的<代码>时钟时间(2)应改为使用(或时间(2)
)。对。固定的。非常感谢。