2014-03-02 37 views
0

您好,我正在創建一個紙牌遊戲並使用System.Net和System.Net.Sockets類。我很難做的是弄清楚我將如何區分誰做了什麼以及將信息包發送給誰。例如,這裏是將要發生的事情的順序。如何區分套接字對象

  1. 用戶登錄到程序中,並根據MySQL數據庫檢查憑證。

  2. 用戶可以創建一個遊戲ID或遊戲#,該遊戲ID或遊戲也會根據數據庫進行檢查,以查看是否已有遊戲ID匹配並允許其加入遊戲或者如果沒有遊戲,則將數據插入數據庫並且基本上等待另一個玩家加入它(如果你想在線遊戲,可以考慮服務器瀏覽器)。

  3. 一旦用戶加入正在進行的遊戲或創建了遊戲,它就會調用異步BeginConnect()。

  4. 然後用戶玩遊戲,並且像(「玩牌」)或(「放鬆生活」)等數據被髮送給當前遊戲中唯一的其他玩家。

我的問題是如何只發送信息給正確的球員。該遊戲只支持2個玩家1對1,但在某個特定時間可能會有多個遊戲進行。例如,可以有5場比賽,每場比賽支持2名球員。對我來說,跟蹤這些套接字的最好方法是什麼,以便我可以區分遊戲ID。

-> user#1 is playing in game with ID #1 against user#2 
--> user#1 "plays a card" 
---> Only send this information to user#2 

我欣賞的幫助提前並請讓我知道如果我離開的東西出來,這將是在回答我的問題卓有成效。

UPDATE
我繼續守望着例子別人是怎麼處理跟蹤單個插座爲每個用戶或在這種情況下,遊戲室。我應該創建一個類讓我們說一個ClientSocket並分配它的屬性?

回答

0

您可以通過將每個連接添加到每個客戶端中的鍵值列表來進行跟蹤,例如(僞代碼):

Dictionary<string gameId, socket gameIdConnection> gameConnections; 

你知道每一個移動到該遊戲ID屬於,這樣你就可以得到它相關的連接/插座,只寫了分組發送到插座。