Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何区分套接字对象_C#_Sockets_Tcp_System.net_System.net.sockets - Fatal编程技术网

C# 如何区分套接字对象

C# 如何区分套接字对象,c#,sockets,tcp,system.net,system.net.sockets,C#,Sockets,Tcp,System.net,System.net.sockets,您好,我正在创建一个纸牌游戏,并使用System.Net和System.Net.Sockets类。我现在很难做的是弄清楚我将如何区分谁做了什么,以及将信息包发送给谁。例如,这里是事情发生的顺序 用户登录程序,并根据MySQL数据库检查凭据 用户可以创建一个游戏ID或游戏#,该ID或游戏也会根据数据库进行检查,以查看是否已经存在匹配的游戏ID,并允许他们加入游戏,或者如果没有游戏,则将数据插入数据库,并基本上等待另一名玩家加入(如果您想要在线游戏,请考虑服务器浏览器) 用户加入正在进行的游戏或创建

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

  • 用户登录程序,并根据MySQL数据库检查凭据

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

  • 用户加入正在进行的游戏或创建游戏后,将调用Async BeginConnect()

  • 然后,用户玩游戏,像“玩过的卡”或“失去生命”等数据被发送给当前游戏中唯一的其他玩家

  • 我的问题是如何只将这些信息发送给正确的玩家。游戏将只支持2名玩家1对1,但在一个给定的时间内可能会有多个游戏。例如,可能会有5个游戏,每个游戏支持2名玩家。对我来说,跟踪这些套接字以便区分游戏ID的最佳方法是什么

    ->user#1正在使用ID#1与user#2进行游戏
    -->用户#1“玩牌”
    --->仅将此信息发送给用户#2
    
    我提前感谢您的帮助,如果我遗漏了一些有助于回答我的问题的内容,请告诉我

    更新

    我一直在看其他人如何处理的例子,为每个用户或在本例中的游戏室跟踪单个插座。我应该为一个ClientSocket创建一个类并为其分配属性吗?

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

    字典游戏连接;
    
    您知道它所属的gameId的每个移动,因此您可以使用它获取关联的连接/套接字,并将数据包写入该套接字

    Dictionary<string gameId, socket gameIdConnection> gameConnections;