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

时间:2013-05-30 00:44:53

标签: java networking tcp udp

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 这会解决滞后问题吗?

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

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

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

    你肯定会注意到这种差异吗?不必要。

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

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

    另见How Fast Is Your Network?

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

    没有

    使用java.net.Socket x 2而不是ava.net.ServerSocket和j java.net.DatagramSocket

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