如何从服务器中的客户端池中识别客户端 - 设计

时间:2013-02-28 02:29:24

标签: c# c++ sockets network-programming

好的,我有一个我正在工作的客户端/服务器库。服务器可以接受来自客户端的多个连接。在每次调用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。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

也许,workerSock.GetHashCode()会做什么?