BSD套接字setsockopt选项,以避免在下次发送之前等待确认

时间:2013-05-25 08:22:47

标签: sockets tcp setsockopt

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

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

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

非常感谢你。

1 个答案:

答案 0 :(得分:0)

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