私はUDPを使用していますが、複数のマシンがサーバーに接続する必要がある場合のAcceptメソッドについて疑問に思っていました。これまで、UDPClienteクラス、IPEndPointクラス、BeginRecieve / EndRecieveメソッドを使用して、複数のマシンが同時に接続できるサーバーを作成していました。
私の質問は簡単です。Acceptメソッドを使用して着信接続を処理し、新しい接続ごとに新しいソケットを作成する必要がありますか?
UDPで複数の接続を処理するための最良の方法は何ですか?
これまでに見たコードサンプルは、新しいUDPClientクラスとIPEndPointを作成し、サーバーはその後接続をリッスンします。コードはBeginRecieveを呼び出し、データを受信する関数を渡してから、BeginRecieveのプロセスを再開します。
これらは私がこれまで使用してきたコードサンプルです:
public static void receiveCallback(IAsyncResult ar)
{
UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;
byte[] receiveBytes = u.EndReceive(ar, ref e);
UdpState s = new UdpState();
s.e = e;
s.u = u;
u.BeginReceive(new AsyncCallback(receiveCallback), s);
}
public static void receiveMessages()
{
IPEndPoint e = new IPEndPoint(IPAddress.Any, 5050);
UdpClient u = new UdpClient(e);
UdpState s = new UdpState();
s.e = e;
s.u = u;
u.BeginReceive(new AsyncCallback(receiveCallback), s);
}