2

好的,所以我有一个正在工作的客户端/服务器库。服务器可以接受来自客户端的多个连接。在每次调用 Accept() 时,如果成功,客户端套接字的句柄将被推送到映射,并使用假定的唯一 ID 作为键。这样当服务器稍后想要向特定客户端发送消息时,它会使用此 ID 找到客户端。

我的问题:每个客户的唯一 ID 是什么?IP 地址是不可能的,因为多个客户端可以来自同一个 IP 地址。如果没有,任何人都可以提出其他一些好的设计。谢谢

插图:

ClientSocket workerSock = Server.Accept();

Map.Add(workerSock);

       Map
____________________
|Key   | Value     |
|------------------|
| ?    |workerSock1| ------------------------ client application 1
|------------------|
| ?    |workerSock2| ------------------------ client application 2
|------------------|
| ?    |workerSock3| ------------------------ client application 3
--------------------

场景:服务器想要发送给特定的客户端,所以它必须有一些 ID。

4

2 回答 2

3

我们在创建网络库networkComms.net时解决了类似的问题。我们的解决方案是通过 IPEndPoint ( MSDN )、Guid ( MSDN ) 和连接类型(例如 TCP、UDP 等)来跟踪对等点。Guid 在高级连接握手期间交换,以便两端都知道对方。

于 2013-02-28T10:46:21.793 回答
1

也许,workerSock.GetHashCode()会吗?

于 2013-02-28T02:35:53.593 回答