我需要在套接字中设置或获取RTT(AF_INET
,SOCK_RAW
, IPPROTO_TCP
)的方式。如何在Linux套接字编程中设置/获取套接字RTT?
接下来我需要做什么来在套接字编程中控制这样的RTT?换句话说,如何找到这样的RTT参数?
我需要在套接字中设置或获取RTT(AF_INET
,SOCK_RAW
, IPPROTO_TCP
)的方式。如何在Linux套接字编程中设置/获取套接字RTT?
接下来我需要做什么来在套接字编程中控制这样的RTT?换句话说,如何找到这样的RTT参数?
为了测量往返时间(RTT)编写一个简单的客户机 - 服务器应用程序,其中一个节点:
clock_gettime()
write()
在将消息发送到所述另一节点(已打开)套接字read()
clock_gettime()
RTT是两次之间的差异。
POSIX.1-2008将'gettimeofday(2)'标记为过时。应该使用'clock_gettime(2)'(或'time(2)')。 –
对。固定。谢谢。 – Claudio
在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);
有针对该API中没有的功能。只需要向另一端发送一条消息,让另一端发回消息并计时。不那么难。 –
请问[tcp-timestamp](http://ithitman.blogspot.in/2013/02/tcp-timestamp-demystified.html)选项有帮助吗? –
它没有设置,它由TCP测量。 – EJP