这是我目前的设置(使用UDP):
我在想,如果我在调用EndReceive后立即调用socket.BeginReceive,然后处理数据包以获取连续的数据包流,会发生什么事情:
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是否会导致无法正常工作?