向UDP客户端发送失败后,C#UDP失败
实际上,下面的代码运行良好。这里的问题是当无人从服务器/接收器(upd服务器/接收器)接收udp时。服务器将停止发送和接收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
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方法,但它不会出现异常。您从未发送,因为您没有收到任何数据。一旦第一个客户端断开连接,您的客户端将停止侦听。您必须捕获连接关闭事件,然后启动新客户端以侦听新连接。