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