private void endReceive(IAsyncResult ar) { IPEndPoint ip = new IPEndPoint(IPAddress.IPv6Any, 00000); byte[] data = client.EndReceive(ar, ref ip); Packet p = new Packet(data, ip); from = ip; Log.Debug("AYY"); if (p.OperationID == operationID) { recv.Add(p.HandshakeID, p.GetCleanData()); Packet reply = p.MakeReply(); client.Send(reply._data, reply._data.Length, ip); Log.Info(string.Format("Received {0} bytes from {1}.", new object[] { data.Length, ip.ToString() })); currentCount++; } else { Log.Error(string.Format("Invalid packet Operation ID {0} expected {1}.", new object[] { p.OperationID.ToString("X"), operationID.ToString("X") })); } if(currentCount != totalCount) { client.BeginReceive(endReceive, null); } else { Log.Info(string.Format("R operation {0} has been completed successfully.", operationID.ToString("X"))); Packet packet = GetPacket(); client.Close(); UdpPacketRouter.QuitReceiveOp(operationID); callBack(packet); } }
static void onReceived(Packet p) { Log.Info(string.Format("Received {0} bytes.", p.GetCleanData().Length)); done = true; }