-1

我正在尝试使用专有的简单原始 TCP 协议通过以太网发送一些 KB 的数据。

标准 Windows 配置要求在返回确认数据包之前接收两 (2) 个数据包,除非您使用 TcpAckFrequency = 1 修改注册表,在这种情况下,一个接收到的数据包足以发送回确认,否则无论如何您将在 TcpDelAckTicks 之后收到一个 ACK * 默认情况下 100 = 200 毫秒(这是另一个注册表项)。如果我以小于 1460 字节的块发送数据,这是一个问题,因为每个块将在 200 毫秒后得到确认,并且发送者将在发送下一个数据包之前等待。一种解决方案是发送大于 1460 字节的数据,以便实际发送两个数据包并接收 ACK。

但是,如果我想发送更小的数据包呢?有没有办法用 setsockopt 配置套接字,以便在发送下一个数据包之前不等待确认数据包?

非常感谢您提前。

4

1 回答 1

0

在发件人处关闭 Nagle 算法。在 C 中,这是 TCP_NODELAY 选项。

于 2013-05-26T02:04:33.930 回答