gpt4 book ai didi

c# - 如何区分 Socket 对象

转载 作者:可可西里 更新时间:2023-11-01 02:54:36 25 4
gpt4 key购买 nike

您好,我正在创建纸牌游戏并使用 System.Net 和 System.Net.Sockets 类。我很难做的是弄清楚我将如何区分谁做了什么以及将那包信息发送给谁。例如,这是将要发生的事情的顺序。

  1. 用户登录程序并根据 MySQL 数据库检查凭据。

  2. 用户可以创建一个游戏 ID 或游戏编号,该 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;

您知道每个 Action 属于哪个 gameId,因此您可以获得关联的连接/套接字并将数据包写入该套接字。

关于c# - 如何区分 Socket 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com