簡體   English   中英

在Java游戲中使用TCP和UDP

[英]Using TCP and UDP for java game

我正在為我的朋友制作一個實時Java游戲,以便他們在LAN上玩。 該游戲在客戶端-服務器體系結構中運行,並且目前正在使用UDP進行所有操作(用於位置更新和加入游戲)。 當我與朋友通過Internet測試游戲時,丟失了一些重要的UDP數據包(例如用於生成敵人的數據包)。

所以我的問題是,使實時多人游戲正常工作的最佳解決方案是什么? 是否可以將UDP用於必要的更新數據包,以及將TCP用於諸如登錄,斷開連接,聊天等數據包? 我可以在同一端口和套接字上使用這兩種協議嗎?

最好的選擇就是使用TCP。 除了為您提供重新發送功能外,您無需自己編寫它們,也無需編寫主機即可獲得其他良好功能,TCP還將使處理路由器和防火牆變得更加容易。

我確實建議關閉Nagle算法,以便始終立即發送數據。

有時可能需要可靠的數據,有時需要TCp。有時不需要它,以便您可以使用UDP。合並兩者。

只是想幫助任何路人,使他們迷失在其他答案中給出的令人難以置信的糟糕建議。 抱歉,我確定這是很好的意思。 如果您有任何實時方面的知識,請不要在游戲中使用TCP。 您會在以后的某個時候后悔。

您想要的是通過UDP實現可靠性/連接。 Gaffer on Games在這個主題上有出色的系列。 我誠摯地建議對這個主題感興趣的每個人閱讀整個系列。 這是描述UDP上“連接”的帖子的鏈接: https : //gafferongames.com/post/virtual_connection_over_udp/

而且您很幸運-他們甚至在開放源代碼庫<3 https://github.com/networkprotocol/yojimbo中實現了所有這些功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM