为什么客户连接速度如此之慢?

时间:2012-08-21 10:07:40

标签: c# asynchronous tcpclient

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

 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秒,我认为是分配。

任何想法为什么需要这么长时间?

感谢您提供任何帮助。

0 个答案:

没有答案