我正在打开一个 UDP 套接字来接收 udp 数据包。然而,有时它永远不会说到点子上Do stuff with data。
正在接收数据,我可以在 Wireshark 上看到它:

但是当我运行 Disconnect 代码时,回调只运行以关闭套接字。
    private void OpenUDPSocket()
    {
        this.processDataSockets.Clear();
        IPHostEntry host;
        host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (IPAddress ip in host.AddressList)
        {
            UPDData data = new UPDData();
            data.Socket = new Socket(ip.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
            data.Socket.Bind(new IPEndPoint(ip, 2222));
            data.Socket.EnableBroadcast = true;
            data.Buffer = new byte[512];
            data.Socket.BeginReceive(data.Buffer, 0, 512, SocketFlags.None, this.ReceivedData, data);
            this.processDataSockets.Add(data);
        }
        this.socketOpen = true;
    }
    private void ReceivedData(IAsyncResult ar)
    {
        UPDData data;
        try
        {
            data = (UPDData)ar.AsyncState;
            data.Socket.EndReceive(ar);
        }
        catch (ObjectDisposedException)
        {
            // The connection has been closed
            return;
        }
//... Do stuff with data
        data.Socket.BeginReceive(data.Buffer, 0, 512, SocketFlags.None, this.ReceivedData, data);
    }
发生这种情况时,我被卡住了,重新启动应用程序无济于事。我需要重新启动机器才能让回调重新开始工作。
我不知道从这里去哪里或如何解决这个问题。
任何想法发生了什么?