2013-05-30 54 views
-6

我做了一個實時遊戲,現在它非常滯後。 我看到了實時遊戲,我寫有'UDP協議'代碼,而不是'TCP'Java聯網程序; (滯後期問題)

這會解決滯後問題嗎?並且以'UDP'形式更改我的代碼真的很難嗎?

謝謝!

+0

你'.flush()'插座你'.WRITE ()'來? – fge

回答

0
  1. 這會解決滯後問題嗎?

    UDP協議是一點點比TCP更快,因爲它缺少一對夫婦增值羣衆演員:

    • 這是不可靠的 - 它不檢查數據包是否成功到達。如果有網絡問題,數據包可能會丟失。
    • 此外它不能保證數據包是否按順序到達。

    當一切正常時(確認正確傳輸所需的額外握手消息)以及網絡出現錯誤(額外重試數據包,接收方等待/重新排序)時滯後時間會稍微延長。
    對於一款遊戲,您可能不需要這些額外的服務。

    你肯定知道其中的差別?不必要。

    速度,業務負載和底層網絡的網絡路由器/交換機的跳數對單獨的分組性能有很大影響。您可能沒有注意到千兆局域網內的任何差異,但可能會看到無線和通過互聯網存在很大差異的小差異。糟糕的路由器設置和繁忙的網絡顯然會讓情況更糟。

    要了解您的網絡路徑,並檢查速度&可靠性/網絡上的錯誤,使用

    又見How Fast Is Your Network?

  2. 難道是真的很難改變我在 'UDP' 形式的代碼?

    而不是使用java.net.Socket的,和j ava.net.ServerSocket使用java.net.DatagramSocket X 2.

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