private void ReceiveMessage()
{
IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
try
{
byte[] receiveBytes = udpClient.Receive(ref remoteIpEndPoint);
ReciDataEvent(this, new UdpEventArgs(receiveBytes));
//string message = Encoding.Unicode.GetString(receiveBytes);
//string message = "";
}
catch (SocketException se)
{
//记录错误
//Debug.Log("clientID:" + clientID);
rmString1 = "clientID:" + clientID;
//Debug.Log("SocketException.ErrorCode:" + se.ErrorCode.ToString());
rmString1 += "SocketException.ErrorCode:" + se.ErrorCode.ToString();
//Debug.Log("SocketException data:" + se.ToString());
rmString1 += "SocketException data:" + se.ToString();
break;
}
catch (ObjectDisposedException ode)
{
//Debug.Log("ObjectDisposedException." + "clientID:" + clientID);
rmString2 += "ObjectDisposedException." + "clientID:" + clientID;
//Debug.Log("ObjectDisposedException data:" + ode.ToString());
rmString2 += "ObjectDisposedException data:" + ode.ToString();
}
}
}
rmString1:clientID:gameSocketException.ErrorCode:10054SocketException data:System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。
把break 注释了,就算有异常,也可以忽视,继续接收信息。
发送数据线程代码:
public void SendDataEventHandler(System.Object sender, UdpEventArgs e)
{
timer += Time.deltaTime;
if (timer > 1)
{
timer = 0;
Udp u = (Udp)sender;
u.udpClient.Send(heartData, heartData.Length, server_REP);
sendCounter++;
if (sendCounter > 100000)
{
sendCounter = 0;
}
}
}
问题,udp怎么知道目标端的程序关闭了?????!!!!