TCP套接字具有较差的延迟,除非不断流式

时间:2014-07-18 22:41:41

标签: java sockets tcp latency

注意:TCP_NODELAY似乎无法解决下述问题。

主要问题:TCP套接字具有较差的延迟(100ms +),除非它们不断地传输数据。如果我正常发送消息,则延迟为100毫秒或更差。我尝试定期发送垃圾数​​据(每0.05秒)并将实际消息放在两者之间,并且延迟得到极大改善。

问题:为什么TCP消息在单独发送时会有不良延迟,但是当套接字流式传输大量数据时,它们具有良好的延迟?

其他一些事情:

我尝试了数据报(UDP),但仍然有一个糟糕的延迟。

我的局域网在计算机之间非常糟糕,这可能是相关的。我有一个Apple Aiport Express。我也尝试在我的Mac之间直接创建无线网络,但我仍然得到一个糟糕的ping。这可能与也可能没有关系。我不知道是否只是ping命令的结果是否具有非常低的优先级。它似乎与套接字延迟一致。

1 个答案:

答案 0 :(得分:2)

这可能是由power-saving features in the wireless network adapter引起的:如果链路安静,配置为减少电源使用的适配器将在大多数时间关闭无线电,每100毫秒只打开一次(或任何你的网络的信标间隔配置为; 100毫秒是一个常见的默认值)到check the beacon message for a flag,表示是否有任何数据包供它接收。

可以通过修改接入点的信标间隔,与有线连接的结果进行比较和/或禁用无线适配器的所有省电功能来测试此假设;如果您的机器没有有线网络端口,那么请考虑使用USB到有线适配器进行测试。