2015-09-21 76 views
0

我目前正在C#中通過.NET套接字開發一個簡單的在線多人遊戲。遊戲服務器編程(可靠和不可靠的通信)

更確切地說我試圖創建一個圍繞這場比賽的網絡通信結構 - 與其說是比賽本身。現在我有一個工作的HTTP服務器,該服務器負責處理基本要求,如「創建一個新的遊戲實例(聚會)」,「加入現有的黨」等

這是工作正常,但我真的不知道如何處理遊戲實例中的通信。根據我的理解,應該有可靠的溝通和不可靠的溝通。像發送「踢球員」,「暫停遊戲」,「獲得球員列表」請求(可靠)併發送輸入,接收快照(不可靠)。

這是否意味着它將使意義有兩個單獨的插座(UDP和TCP)在不同的端口上運行,所以我實際上有兩個服務器,每場比賽的情況下與溝通?或者有沒有辦法通過一個單一的udp套接字實現保證交付和不可靠交付?

注:我真的不瞄準到達有序分組,所以可靠的,我主要是指確保文實際到達目的地

注2:我真的不希望打擾的HTTP這個遊戲實例具體可靠的東西的服務器,在我看來,這將是更好,如果遊戲實例可以處理這個自己

我看到This question here是相似的,但接受的答案並沒有真正幫助我。我對有關答案的探討是:如何通過C#中的.NET套接字組合可靠和不可靠的通信?

回答

0

你不一定必須使用不同的端口 - 實際上這將是一個優勢,只使用一個簡化最終用戶需要,如有需要,他們的路由器上打開入站端口的任何指令。

退房libenet(http://enet.bespin.org)一個開放源碼庫,負責多個連接超過一個端口。它支持有保證的順序和不可靠的流。

+0

這看起來不錯!這些在我的「方法」中針對每個遊戲實例使用的多個端口也是最讓我困擾的。 所以我想要走的路是隻使用一個UDP套接字,並建立一個自定義的類似於TCP的結構,或者通過手動或使用庫來實現。這樣用戶可以決定是否可靠地發送數據報。 – Jay