私は魔女でプログラムを作ろうとしています。複数のクライアントがサーバーに接続します。しかし、同時に複数のクライアントを接続しようとすると、「長い時間」かかるため、問題があります。
私は接続するために非同期の方法を使用しています:
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 ()
{
}
}
接続したいクライアントごとに、上記の2つのメソッドを含む新しいクラスを開きます。単純なforループよりも、メソッドを次々に呼び出します。
Wiresharkでは、次にサーバーに接続する必要がある時間は0.1秒であることがわかります。
なぜそんなに時間がかかるのか、何か考えはありますか?
どんな種類の助けにも感謝します。