Ejemplo n.º 1
0
        public static List <Packet> DownloadAccept(Core core, Client client, Packet packet)
        {
            PacketArg args = packet.GetArguments(new[]
            {
                typeof(int),
                typeof(string)
            });

            DownloadModule module = core.GetModule <DownloadModule>();
            Plexer         p      = core.GetModule <Plexer>();
            IPEndPoint     end    = (IPEndPoint)client.GetSocket().RemoteEndPoint;
            Client         c      = p.ConnectToServer(end.Address.ToString(), end.Port, true, args.Get <int>(0));

            int    token = args.Get <int>(0);
            string hash  = args.Get <string>(1);

            module.BindTask(c, (i => i.Hash == hash), token, true);

            return(null);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// The class constructor
        /// </summary>
        /// <param name="socket">A socket from this client</param>
        public Client(Socket socket, bool serverSide, DownloadModule dl = null)
        {
            Socket              = socket;
            PacketBuilder       = new PacketBuilder();
            ReceivedPackets     = new List <Packet>();
            SendingPackets      = new List <Packet>();
            DisconnectCallbacks = new List <ClientDisconnectDelegate>();

            if (serverSide)
            {
                byte[] a = new byte[4];
                int    i = Socket.Receive(a, 4, SocketFlags.None);
                DLToken = BitConverter.ToInt32(a, 0);

                if (DLToken != 0)
                {
                    IsFileSocket = true;
                    dl.BindTask(this, (elem => elem.Token == DLToken), null, false);
                }
            }
        }