有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java TCPsocket的延迟很差,除非持续流式传输

注意:TCP_NODELAY似乎没有解决下面描述的问题

主要问题:TCPsocket的延迟很差(100ms+),除非它们不断地传输数据。如果我正常发送消息,延迟为100ms或更糟。我尝试以固定的间隔(每0.05秒)发送垃圾数据,并将实际的消息放在中间,延迟大大改善

问题:为什么TCP消息单独发送时延迟不好,而socket传输大量数据时延迟好

其他一些事情:

我尝试了数据报(UDP),但延迟仍然很差

我的lan ping在计算机之间的性能很差,这可能是相关的。我有一个苹果机场快车。我也尝试过在我的Mac电脑之间直接建立无线网络,但我还是收到了一个糟糕的ping。这可能相关,也可能无关。我不知道这是否只是ping命令的优先级很低的结果。不过,这似乎与socket延迟一致


共 (1) 个答案

  1. # 1 楼答案

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

    这个假设可以通过修改接入点的信标间隔、与有线连接的结果进行比较和/或禁用无线适配器的所有节能功能来检验;如果你的机器没有有线网络端口,那么考虑用USB连接到有线适配器。p>