好的,我有一个我正在工作的客户端/服务器库。服务器可以接受来自客户端的多个连接。在每次调用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。
答案 0 :(得分:3)
我们在创建网络库networkComms.net时解决了类似的问题。我们的解决方案是通过IPEndPoint(MSDN),Guid(MSDN)和连接类型(例如, TCP,UDP等。在高级连接握手期间交换Guid,以便两端都知道另一端。
答案 1 :(得分:1)
也许,workerSock.GetHashCode()
会做什么?