如何区分套接字对象


你好,我正在创建一个纸牌游戏,并使用System.Net和System.Net.Sockets类。我很难做的是弄清楚如何区分谁做了什么,以及将信息包发送给谁。例如,以下是将要发生的事情的顺序。
  1. 用户登录到程序,凭据将根据MySQL数据库进行检查。

  2. 用户可以创建一个游戏ID或游戏#,并根据数据库进行检查,以查看是否已经有匹配的游戏ID并允许他们加入游戏,或者如果没有游戏,则将数据插入数据库,基本上等待另一个玩家加入(如果你想玩在线游戏,请考虑服务器浏览器)。

  3. 一旦用户加入了正在进行的游戏或创建了游戏,它就会调用Async 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

我很感激事先的帮助,如果我遗漏了一些内容,请告诉我,这将有助于回答我的问题。

更新
我一直在研究其他人如何处理跟踪每个用户的单个套接字的示例,或者在本例中是Game Room。我应该为ClientSocket创建一个类并为其分配属性吗?

您可以通过将每个连接添加到每个客户端的键值列表来跟踪,例如(伪代码):

Dictionary<string gameId, socket gameIdConnection> gameConnections;

你知道它所属的gameId的每个移动,所以你可以获得与它相关的连接/套接字,并将数据包写入该套接字。

相关内容

  • 没有找到相关文章

最新更新