我正在尝试使用多个客户端连接到服务器。但我有一个问题,因为当我尝试同时连接多个客户端时,需要“很长时间”才能完成。
我使用异步方式连接:
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秒,我认为是分配。
任何想法为什么需要这么长时间?
感谢您提供任何帮助。