向UDP客户端发送失败后,C#UDP失败

向UDP客户端发送失败后,C#UDP失败,c#,udp,C#,Udp,实际上,下面的代码运行良好。这里的问题是当无人从服务器/接收器(upd服务器/接收器)接收udp时。服务器将停止发送和接收udp private void Form1_Load(object sender, EventArgs e) { int receiverPort = 54679; UdpClient receiver = new UdpClient(receiverPort); receiver.BeginReceive(D

实际上,下面的代码运行良好。这里的问题是当无人从服务器/接收器(upd服务器/接收器)接收udp时。服务器将停止发送和接收udp

    private void Form1_Load(object sender, EventArgs e)
    {
        int receiverPort = 54679;
        UdpClient receiver = new UdpClient(receiverPort);
        receiver.BeginReceive(DataReceived, receiver);
    }
    private void DataReceived(IAsyncResult ar)
    {
        UdpClient c = (UdpClient)ar.AsyncState;
        IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 54679);
        Byte[] receivedBytes = c.EndReceive(ar, ref receivedIpEndPoint);

        try
        {
            Invoke((MethodInvoker)delegate
            {
                string _hexString = ByteArrayToString(receivedBytes).Replace(" ", "");
                TextBox1.Text = _hexString;
                string replay = "I got your message";
                byte[] replayBinary = StringToByteArray(replay);
                IPEndPoint replayIpAddress = receivedIpEndPoint;
                c.Send(replayBinary, replayBinary.Length, replayIpAddress);
            });
            c.BeginReceive(DataReceived, ar.AsyncState);
        }
        catch { }
    }

您是否在null catch中遇到异常?连接由客户端启动,在客户端连接之前,您的代码不会发送。一旦客户端断开连接,UdpClient将变为null。要保持代码运行,必须为断开连接添加一个事件,然后创建一个新的UdpClient并运行BeinReceive()方法。我尝试捕获send方法,但它不会出现异常。您从未发送,因为您没有收到任何数据。一旦第一个客户端断开连接,您的客户端将停止侦听。您必须捕获连接关闭事件,然后启动一个新客户端来侦听新连接。您是否在null catch中遇到异常?连接由客户端启动,在客户端连接之前,您的代码不会发送。一旦客户端断开连接,UdpClient将变为null。要保持代码运行,必须为断开连接添加一个事件,然后创建一个新的UdpClient并运行BeinReceive()方法。我尝试捕获send方法,但它不会出现异常。您从未发送,因为您没有收到任何数据。一旦第一个客户端断开连接,您的客户端将停止侦听。您必须捕获连接关闭事件,然后启动新客户端以侦听新连接。