我有一台服务器接受来自多个客户端的异步套接字连接。现在我正在为它们分配一个服务器端唯一ID,这取决于它们的输入IP地址和港口。我担心的是 - 如果2个客户端连接相同的IP&在NAT后面。有没有更好的方法来确定这个?
private static int DetermineSocketToConnectionID(Socket handler)
{
int connectionIDForHandler = 0;
string uniqueIPString = handler.RemoteEndPoint.ToString();
if (Client1Buffers.UserIPAddress == uniqueIPString)
{
connectionIDForHandler = 1;
}
if (Client2Buffers.UserIPAddress == uniqueIPString)
{
connectionIDForHandler = 2;
}
return connectionIDForHandler;
}
答案 0 :(得分:1)
您可能最好让这些客户端在第一次连接时使用服务器对自己进行身份验证,并向您传递可用于识别它们的信息,而不是信任网络信息。这正是创建会话和cookie以便将客户端登录到Web服务器的原因。你可以通过与客户端握手并将它们传回一个uid来做类似的事情,然后他们需要在每次后续连接时传回服务器。