public void FinalReceiveCallback(IAsyncResult iar) { UdpState udpState = iar.AsyncState as UdpState; if (iar.IsCompleted) { Console.WriteLine("FinalReceiveCallback:" + Thread.CurrentThread.ManagedThreadId); Byte[] receiveBytes = udpState.udpClient.EndReceive(iar, ref udpReceiveState.ipEndPoint); FinalBackString = Encoding.UTF8.GetString(receiveBytes); receiveDone.Set(); } }
// 接收回调函数 public void ReceiveCallback(IAsyncResult iar) { UdpState udpState = iar.AsyncState as UdpState; if (iar.IsCompleted) { Console.WriteLine("ReceiveCallback:" + Thread.CurrentThread.ManagedThreadId); Byte[] receiveBytes = udpState.udpClient.EndReceive(iar, ref udpReceiveState.ipEndPoint); string receiveString = Encoding.UTF8.GetString(receiveBytes); if (receiveString == "Y") { udpReceive.BeginReceive(new AsyncCallback(FinalReceiveCallback), udpReceiveState); } else { FinalBackString = "N"; receiveDone.Set(); } } }
public AsyncUdpClient() { var name = Dns.GetHostName(); var ssfs = Dns.GetHostAddresses(name); // 本机节点 localEP = new IPEndPoint(Dns.GetHostAddresses(Dns.GetHostName())[1], listenPort); // 远程节点 remoteEP = new IPEndPoint(Dns.GetHostAddresses(Dns.GetHostName())[1], remotePort); // 实例化 udpReceive = new UdpClient(localEP); udpSend = new UdpClient(listenPort); // 分别实例化udpSendState、udpReceiveState //udpSendState = new UdpState(); //udpSendState.ipEndPoint = remoteEP; //udpSendState.udpClient = udpSend; udpReceiveState = new UdpState(); udpReceiveState.ipEndPoint = remoteEP; udpReceiveState.udpClient = udpReceive; }