2014-03-02 39 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属于,这样你就可以得到它相关的连接/插座,只写了分组发送到插座。