gpt4 book ai didi

linux - 在linux中读取send-q TCP socket的内容

转载 作者:可可西里 更新时间:2023-11-01 02:33:47 26 4
gpt4 key购买 nike

我有一个 TCP 客户端不断地向服务器发送数据。客户端与服务器成功连接后,客户端以几秒为单位,以一定的间隔连续发送数据。

当client和server发送的数据很少就断开连接时,我才知道TCP是根据TCP_retries2中的值重传数据的,我把这个值配置成8,这样100后就写错了秒。但是 send-q 中会有一些未确认的数据包。

在关闭这个套接字之前,有没有办法在我的程序中的send-q中读取这个未确认数据包的内容,或者我应该记住发送数据并在再次连接后重新发送它?还有其他方法可以实现吗?

最佳答案

您可以使用 ioctl 获取 sendq 的大小:

SIOCOUTQ
Returns the amount of unsent data in the socket send queue.
The socket must not be in LISTEN state, otherwise an error
(EINVAL) is returned. SIOCOUTQ is defined in
<linux/sockios.h>. Alternatively, you can use the synonymous
TIOCOUTQ, defined in <sys/ioctl.h>.

请注意,sendq 仅告诉您远程系统的内核接受了什么,它不保证在该主机上运行的应用程序处理了它。大多数故障存在于通信双方之间的网络中,但该指标不能作为传输成功的确切证据。

关于linux - 在linux中读取send-q TCP socket的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22981418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com