2013-10-26 27 views
1

我有一个服务器接受来自多个客户端的异步套接字连接。现在,我将根据它们的传入IP地址&端口为其分配一个服务器端唯一ID。我担心的是 - 如果2个客户端在NAT后面连接相同的IP &会怎么样。有没有更好的方法来确定这一点?异步套接字 - 标识唯一连接

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

NAT后面的两个客户端将具有相同的IP地址但不同的端口。 – dtb

回答

1

你可能会更好为这些客户端与服务器的第一个连接上验证自己的身份,并通过你的东西,你可以用它来识别它们不是信任网络信息等。这正是为什么创建会话和cookie以便将客户端登录到Web服务器的原因。您可以通过与客户端握手并将它们传回给一个uid来做类似的事情,然后他们需要在每个后续连接上传回服务器。