Java TCP延迟

我正在开发一个通过WLAN连接与TCP
Java服务器通信的
Android应用程序.
Android应用程序是一个精灵在屏幕上移动的游戏.每当精灵移动时,AndroidClient将其坐标发送到Java服务器,然后将数据发送到其他客户端(最多4个客户端).服务器在一个单独的线程上处理每个客户端,大约每20毫秒发送一次数据更新,每个数据包由大约1-10个字节组成.我使用的是70 Mbit网络(我的无线网络有效约15 Mbit).

我遇到连接不稳定的问题,并且在大约50-500毫秒时遇到延迟.每10至30包.我已经将tcpNoDelay设置为true,但是它停止了一致的200ms延迟,尽管它仍然滞后很多.由于我对Android和网络都很陌生,我不知道这是否是预期的.我也想知道UDP是否适合我的程序,因为我有兴趣快速发送更新而不是每个数据包正确到达.

对于如何避免/解决此延迟问题,我将不胜感激.关于如何实现这种客户端 – 服务器架构的一般提示也将受到称赞.

最佳答案 在无线局域网上,您偶尔会看到丢弃的数据包,这会在延迟后导致数据包重新传输.如果你想在重传之前控制延迟,你几乎肯定要使用UDP.

点赞