从程序中获取我的 TCP 连接的 cwnd
Get cwnd of my TCP connection from a program
我正在使用 boost.asio 从我的 linux 程序创建一个 TCP 连接。请问如何从程序中获取其拥塞值window(cwnd)?我知道的唯一方法是解析 /proc/net/tcp
,但这感觉不对。我宁愿使用专用系统调用来获取此信息。
类似问题(How to monitor cwnd and ssthresh values for a TCP connection?)的解决方案建议使用TCP Probe,但感觉更不吸引人。
那么获取cwnd的值最好的方法是什么?
我用 netlink and INET_DIAG-sockets based on this helpful example: https://github.com/kristrev/inet-diag-example
做了这个
原来 getsockopt()
在使用 TCP_INFO
选项调用时能够 return 相同的 tcp_info
:
tcp_info tcpi = {};
socklen_t len = sizeof(tcp_info);
getsockopt(tcp_socket, SOL_TCP, TCP_INFO, &tcpi, &len);
tcpi.tcpi_snd_cwnd; // <-- CWND
我正在使用 boost.asio 从我的 linux 程序创建一个 TCP 连接。请问如何从程序中获取其拥塞值window(cwnd)?我知道的唯一方法是解析 /proc/net/tcp
,但这感觉不对。我宁愿使用专用系统调用来获取此信息。
类似问题(How to monitor cwnd and ssthresh values for a TCP connection?)的解决方案建议使用TCP Probe,但感觉更不吸引人。
那么获取cwnd的值最好的方法是什么?
我用 netlink and INET_DIAG-sockets based on this helpful example: https://github.com/kristrev/inet-diag-example
做了这个原来 getsockopt()
在使用 TCP_INFO
选项调用时能够 return 相同的 tcp_info
:
tcp_info tcpi = {};
socklen_t len = sizeof(tcp_info);
getsockopt(tcp_socket, SOL_TCP, TCP_INFO, &tcpi, &len);
tcpi.tcpi_snd_cwnd; // <-- CWND