예제 #1
0
        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);
            }
        }
예제 #2
0
 static void onReceived(Packet p)
 {
     Log.Info(string.Format("Received {0} bytes.", p.GetCleanData().Length));
     done = true;
 }