我有需要使用TcpClient的ac#sdk,但是连接使用200ms作为延迟ack时间,但是我的服务器将在100ms内重新传输数据,所以每次服务器发送tcp数据时,它都会进行重传
那么有什么想法可以减少延迟时间吗?比如减少到40ms?
我知道它可以通过设置TCP_QUICKACK来禁用linux上的延迟,但有没有办法禁用延迟时间或缩短窗口时间?
我看到Windows上有一个注册表项可以减少延迟时间,但它是为网络界面设置的,我只是想为我的程序设置,而不影响其他程序。
我也尝试过NO_DELAY选项,但这个选项似乎适用于nagle,而不是延迟ack,所以它对我不起作用。
好的,我必须做一个更新,以确保你了解我的情况。
我确实理解当你在连接上收到很多小包时,delay ack对于减少tcp包数是有用的。
但在我的情况下,情况有所不同,我有很多连接,他们可能什么都不做,只是挂在我的服务器上,等待来自服务器的消息。为了确保连接处于活动状态,客户端将每隔30秒(例如)向服务器发送一个ping包,服务器将响应一个乒乓。然后客户端什么都不做。
所以在我的情况下,从服务器发送的pong响应在100ms内没有被激活,因为Windows默认等待200ms,然后我的服务器认为包丢失了,发送了重传。
因此,延迟确认不会减少包裹数量,而是增加包裹数量。