2012-06-08 38 views
1

我正在爲我和朋友創建的XNA遊戲編寫一個Tcp服務器,我想知道如何發送到使用NetworkStream連接到服務器的特定客戶端。例如,您可以獲取主持人的玩家位置並將其發送給服務器,以便將其發送給其他連接的客戶端。網絡流和多個連接

+0

我正在關注一個解釋TcpClient和NetworkStream似乎只有.Write()的教程。我第一次瞭解套接字服務器,你可以使用.SendTo()來做到這一點,但我不知道如何與NetworkStream。 – tcoy

+0

服務器將需要有多個NetworkStreams,每個客戶端一個。假設客戶端的數量不是固定的,那意味着您需要編碼服務器來根據需要分配和釋放它們。 – ekolis

+0

@ekolis我意識到自發布以來這已經很長時間了,但您將使用什麼策略來分配和取消分配客戶端? – Adsy2010

回答

2

您將需要幾件事情讀了起來:

這應該讓你開始:

  1. TcpListener
  2. TcpClient

你的服務器需要有一個TcpListener 。如果您想要支持多個客戶端,請創建一個客戶端列表。每個連接的客戶端將獲得一個TcpClient。從這些客戶端上的NetworkStream中讀取數據。當您收到其中一個數據時,將其發送給其他人。

您需要定義某種協議,以便知道客戶端發送的消息何時完成,並且可以提前發送。

+0

當然你可以定義你自己的協議。但還有另一種選擇:使用現有的協議,如來自WCF的協議,或者例如JSON-RPC。 – svick