您好我正在创建一个纸牌游戏并使用System.Net和System.Net.Sockets类。我正在努力做的是弄清楚我将如何区分谁做了什么以及谁将信息包发送给谁。例如,这是将要发生的事情的顺序。
根据MySQL数据库检查用户登录程序和凭据。
用户可以创建一个游戏ID或游戏#,该游戏ID也会根据数据库进行检查,以确定是否已经存在游戏ID匹配并允许他们加入游戏,或者如果没有游戏则插入数据进入数据库并基本上等待其他玩家加入它(如果你想在线游戏,可以考虑使用服务器浏览器)。
用户加入正在进行的游戏或创建游戏后,会调用Async BeginConnect()。
然后用户玩游戏,并向当前游戏中唯一的其他玩家发送类似(“玩牌”)或(“失去生命”)等数据。
我的问题是如何只将信息发送给正确的玩家。该游戏仅支持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
我提前感谢您的帮助,如果我遗漏了一些能够回答我问题的成果,请告诉我。
更新
我一直在继续查看其他人如何处理每个用户或在这种情况下游戏室的单个插座的示例。我应该为一个ClientSocket创建一个类并为其分配属性吗?
答案 0 :(得分:0)
您可以通过将每个连接添加到每个客户端中的键值列表来跟踪,例如(伪代码):
Dictionary<string gameId, socket gameIdConnection> gameConnections;
你知道它所属的gameId的每个移动,所以你可以用它获得相关的连接/套接字,然后把数据包写到那个套接字。