有 Java 编程相关的问题?

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

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

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

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

谢谢大家!


共 (1) 个答案

  1. # 1 楼答案

    1. 这能解决滞后问题吗

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

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

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

      你会注意到其中的区别吗?不一定

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

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

      另见How Fast Is Your Network?

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

      没有

      而不是使用java.net.Socket和java.net.ServerSocket使用java.net.DatagramSocketx2

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