Java网络程序; (滞后问题)

Posted

技术标签:

【中文标题】Java网络程序; (滞后问题)【英文标题】:Java networking program; (Lagging issue) 【发布时间】:2013-05-25 10:32:26 【问题描述】:

我做了一个实时游戏,现在非常滞后。 我看到对于实时游戏,我使用“UDP 协议”而不是“TCP”编写代码

这会解决滞后问题吗?以“UDP”形式更改我的代码真的很难吗?

谢谢!

【问题讨论】:

.flush().write()到的套接字吗? 【参考方案1】:

    这能解决滞后问题吗?

    UDP 协议比 TCP 快一点,因为它缺少一些附加值:

    不可靠 - 它不检查数据包是否成功到达。如果出现网络问题,数据包可能会丢失。 此外,它不保证数据包是否按顺序到达。

    当一切正常时(需要额外的握手消息来确认正确传递),这些会产生一个小的额外延迟,而当网络上出现错误(额外的重试数据包、接收器等待/重新排序)时,会产生更大的延迟。 对于游戏,您可能不需要这些额外的服务。

    您肯定会注意到其中的不同吗?不必要。

    底层网络的速度、流量负载和网络路由器/交换机跳数对单个数据包的性能有很大影响。您可能不会注意到千兆本地 LAN 中的任何差异,但可能会看到无线网络的微小差异和互联网的巨大差异。糟糕的路由器设置和繁忙的网络显然会使事情变得更糟。

    要了解您的网络路径并检查网络上的速度和可靠性/错误,请使用

    命令行ping & traceroute/tracert 网络检查工具,例如LAN Speed Test 或 NetStatLive 或 testmy.net

    另见How Fast Is Your Network?

    以“UDP”形式更改我的代码真的很难吗?

    没有。

    不要使用java.net.Socket,而java.net.ServerSocket使用java.net.DatagramSocket x 2。

    http://docs.oracle.com/javase/tutorial/networking/datagrams/clientServer.html

【讨论】:

以上是关于Java网络程序; (滞后问题)的主要内容,如果未能解决你的问题,请参考以下文章

不断开连接HttpUrlConnection意味着资源缺乏或网络滞后

如何解决 Java awt/swing 图像打印的滞后问题?

我试图优化(内存)我的程序,但 GC 仍然让它滞后

为啥一个简单的模态视图控制器在呈现和关闭时会滞后?

OpenJDK 的 JDK 位置

在 MATLAB R2015b 中使用神经网络预测金融时间序列(实际输出和预测输出之间的滞后)