これは私の現在の設定です(UDPを使用):
void OnDataReceived(IAsyncResult result)
{
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);
byte[] buffer = socket.EndReceive(result, ref ep);
Packet p = new Packet(Encoding.ASCII.GetString(buffer, 0, buffer.Length));
//process packet
socket.BeginReceive(new AsyncCallback(OnDataReceived), socket);
}
EndReceiveを呼び出した後すぐにsocket.BeginReceiveを呼び出し、次にパケットを処理して次のような連続的なパケットフローを取得すると、どうなるか疑問に思いました。
void OnDataReceived(IAsyncResult result)
{
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);
byte[] buffer = socket.EndReceive(result, ref ep);
socket.BeginReceive(new AsyncCallback(OnDataReceived), socket);
Packet p = new Packet(Encoding.ASCII.GetString(buffer, 0, buffer.Length));
//process packets
}
BeginReceiveを呼び出すとすぐにパケットが受信された場合、これは現在のパケット処理と何らかの形で競合しますか?
また、これが競合しない場合、TCPに変更するとこれが機能しなくなりますか?