这是我当前的设置(使用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);
}
Run Code Online (Sandbox Code Playgroud)
我想知道如果我在调用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
}
Run Code Online (Sandbox Code Playgroud)
如果我在调用BeginReceive时收到数据包,是否会以某种方式与当前数据包处理冲突?
此外,如果这不会发生冲突会改变为TCP使这个功能失效吗?