我尝试使用 TcpClient.NoDelay = true,但直到 200 毫秒后它仍然不会发回确认。我更改了网络适配器的 Windows 注册表设置以禁用 Nagle 算法,并且有效,ACK 立即发送。难道不应该有一种方法可以在不更改注册表设置的情况下禁用 200 毫秒延迟吗?
更新:感谢您对UDP的建议。我同意 UDP 是应用程序的正确协议(protocol),但不幸的是,我正在处理目前只有 TCP 接口(interface)的设备,所以我的手被束缚在那里。
最佳答案
ACK 数据包是底层操作系统的 TCP/IP 堆栈的内部工作问题。无论如何,您的应用程序不应受到 TCP 协议(protocol)的标准行为的损害。如果是,您应该考虑使用其他方式,例如 UDP。
关于.net - 如何强制我的 C# 应用程序立即确认 TCP 数据报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825061/