1

我正在尝试在女巫乘法客户端中制作一个程序将连接到服务器。但我有一个问题,因为当我尝试同时连接多个客户端时,需要“很长时间”才能完成。
我正在使用异步方式连接:

 public bool connect(string IP,int port)                                                                                                       
    { 

        try                                                                                                                                       
        {

            if (m_clientSocket == null)
            {                                                                                                      
                m_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                                                                                                    
                IPAddress ip = IPAddress.Parse(IP.ToString());
                int iPortNo = System.Convert.ToInt16(port.ToString());

                IPEndPoint ipEnd = new IPEndPoint(ip, iPortNo);                                                                                                      
                client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client);
            }

        }catch()                                                                                                                
        {                                                                                                                                                                                                                                               
            return false;                                                                                                                         
        }
    } 


private void ConnectCallback(IAsyncResult ar)
    {
        try
        {
            Socket client = (Socket)ar.AsyncState;

            if (m_clientSocket != null)
            {
                if (m_clientSocket.Connected)
                {
                    client.EndConnect(ar);
                    // send next data here

                }
                else
                {
                    client.EndConnect(ar);
                    m_clientSocket.Close();
                    m_clientSocket = null;
                    state = CONNECT_ERROR; 
                }
            }

        }
        catch ()
        {   
        }
    }   

对于我要连接的每个客户端,我打开一个新类,其中包含您可以在上面看到的两种方法。与简单的 for 循环相比,我一个接一个地调用方法。

在 Wireshark 中,我观察到下一次需要连接到服务器的时间是 0.1 秒,我认为这是分配的。

知道为什么要花这么长时间吗?

感谢您提供任何帮助。

4

0 回答 0