private void UdprecvEventHandler(object sender,msgReceiptEventArg e) { this.Invoke(new ThreadUIHandle(ThreadUIHandleMethod),e); }
//开始监听 private void recvProc() { while(con) { state = "open"; try { //Receive方法将阻塞进行,直到得到请求信息 //参数ref C_Point将得到请求信息的主机信息 byte[] msg = sv.Receive(ref C_Point); //事件参数 msgReceiptEventArg eRecv = new msgReceiptEventArg(); eRecv.data = new byte[msg.Length]; eRecv.data = msg; //e.data = System.Text.Encoding.UTF8.GetString(msg); eRecv.requestIP = C_Point.Address.ToString(); eRecv.requestPort = C_Point.Port; eRecv.ErrorHappened = false; //如果有事件绑定,就触发事件 if (msgReceiptEvent != null) { msgReceiptEvent(this, eRecv); } } catch(Exception e) { CloseListen(); //msgReceiptEventArg e1 = new msgReceiptEventArg(); //e1.ErrorHappened = true; //e1.errorString = e.Message; //if (msgReceiptEvent != null) //{ // msgReceiptEvent(this, e1); //} } } }
private void ThreadUIHandleMethod(msgReceiptEventArg eventData) { if (eventData.ErrorHappened) { this.labelUdpstatus.Text = "通讯服务发生错误,已断开"; } else { udpPackage package = new udpPackage(); if(package.Pack(eventData.data)) { if(package.addr == 1) { try { _transMachine1.RecvCmd(package, eventData.requestIP, eventData.requestPort); } catch (System.Exception e) { Console.WriteLine("_transMachine1.RecvCmd:" + e.Message); } } else if(package.addr == 2) { _transMachine2.RecvCmd(package, eventData.requestIP, eventData.requestPort); } } } }