1

我有一个接受来自多个客户端的异步套接字连接的服务器。现在我根据他们的传入 IP 地址和端口为他们分配一个服务器端唯一 ID。我担心的是 - 如果 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;
        }
4

1 回答 1

1

您最好让这些客户端在第一次连接时向服务器验证自己的身份,并向您传递一些您可以用来识别它们的东西,而不是信任网络信息。这正是为将客户端登录到 Web 服务器而创建会话和 cookie 的原因。您可以通过与客户端握手并将其传回一个 uid 来执行类似的操作,然后他们需要在每次后续连接时将其传回服务器。

于 2013-10-26T03:25:28.367 回答