小编Xor*_*rox的帖子

使用UDP接收和处理连续数据包

这是我当前的设置(使用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使这个功能失效吗?

.net c# sockets udp asynccallback

4
推荐指数
1
解决办法
3741
查看次数

标签 统计

.net ×1

asynccallback ×1

c# ×1

sockets ×1

udp ×1