void udp_OnReceivedData(object sender, UdpService.ReceivedDataEventArgs e) { try { UdpServer udp = sender as UdpServer; //添加入连接列表 //UdpBussiness.AddSocket(udp, e.ClientSocket); //写入接收数据队列 UdpBussiness.WriteUrdQ(udp, e.ClientSocket, e.RevData); //写入透明传输的数据报列表 ServiceBussiness.WriteQDM(e.RevData); //写入日志 LogInfoToTxt(ServiceEnum.NFOINDEX.UDP, e.ClientSocket.Address + ":" + e.ClientSocket.Port, e.RevData); //写入待发送至界面的数据处理列表(透明传输代替) //ServiceBussiness.WriteQRDM(udp.ServiceID, e.RevData); //解析数据包 UdpBussiness.ResolvePacket(udp); } catch (Exception ex) { log.Error(DateTime.Now + "接收处理操作异常" + ex.ToString()); } }
public void PacketArrived(UdpService.UdpServer US) { string ServiceId = US.ServiceID; ConcurrentQueue <UdpReceivedData> Qurd = US.UQ.Qurd; List <UdpSocket> Us = US.Us; ConcurrentQueue <UdpSendData> Qusd = US.UQ.Qusd; while (Qurd.Count > 0) { UdpReceivedData urd = null; Qurd.TryDequeue(out urd); if (urd != null) { try { //注册&透传 Service.ServiceBussiness.RemoteCommand(urd.Data); //Service.ServiceBussiness.Registered30(urd.Data); //ASCII To String string STR = Encoding.ASCII.GetString(urd.Data); List <string> list = pd.SubPackage(STR); if (list.Count > 0) { bool PkV = true; foreach (var item in list) { PkV = pd.PacketValidate(item); if (PkV) { string STCD = pd.GetCode(item); InsertNewSTCD(STCD, Service.ServiceEnum.NFOINDEX.UDP, US); bool B = false; //更新socket列表的stcd、socket UdpBussiness.UpdSocket(US, urd.IpEndPoint, STCD, out B); if (!B) { //上线 UdpBussiness.UdpConnected(US, STCD); } //通知界面 ServiceBussiness.WriteQUIM("UDP", ServiceId, STCD, "接收数据", urd.Data, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text); PacketArrived(item, ServiceEnum.NFOINDEX.UDP, US); } } } else { ServiceBussiness.WriteQUIM("UDP", ServiceId, "", "接收异常数据", urd.Data, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text); } } catch (Exception ex) { //通知界面 ServiceBussiness.WriteQUIM("UDP", ServiceId, "", "接收异常数据", urd.Data, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text); log.Error(DateTime.Now + "包处理操作异常" + ex.ToString()); } } } }