private void ReceiveThread() { while (IsActive) { try { IPEndPoint ip = new IPEndPoint(IPAddress.Any, 0); byte[] data = Receive(ref ip); if (data.Length > 0) { Session c = TcpService.Instance.GetSession(ip); // 根据IP查找Session if (MessageBuffer.IsValid(data)) { var buffer = new MessageBuffer(data); if (c == null || c.Id != buffer.Extra()) { // 在根据Ip查找到的Session对应不上消息发送方Socket // 根据消息的ID查找Session c = TcpService.Instance.GetSession(buffer.Extra()); } if (c != null) { if (c.udpAdress == null || c.udpAdress.Equals(ip) == false) { c.udpAdress = ip; // 更新Session的IP地址 } c.OnReceiveMessageUDP(buffer); } } } Thread.Sleep(1); } catch (SocketException e) { Debug.Log("UDP接收消息:" + e.Message); continue; } catch (Exception e) { Debug.Error("UDP接收消息:" + e.Message); throw e; } } }