Това е текущата ми настройка (използвайки 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 ще направи ли това нефункционално?