Это моя текущая настройка (с использованием 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);
}
Мне было интересно, что произойдет, если я сразу же вызову socket.BeginReceive после вызова EndReceive, а затем обработаю пакет, чтобы получить непрерывный поток пакетов, подобный этому:
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 сделал бы это неработоспособным?