Пример #1
0
        private void ReceivePayload(IAsyncResult ar)
        {
            if (IsClientConnected())
            {
                int bytesReceived = tcpClient.Client.EndReceive(ar);
                if (bytesReceived != 0)
                {
                    Interlocked.Add(ref transferred, bytesReceived);
                    Interlocked.Add(ref received, bytesReceived);

                    if (bytesReceived == remaining)
                    {
                        ServerHeader header = (ServerHeader)ar.AsyncState;
                        PacketReader packet = new PacketReader(header, Buffer);
                        HandleIncoming(packet);

                        Start();
                    }
                    else
                    {
                        index     += bytesReceived;
                        remaining -= bytesReceived;
                        tcpClient.Client.BeginReceive(Buffer, index, remaining, SocketFlags.None, new AsyncCallback(ReceivePayload), ar.AsyncState);
                    }
                }
            }
        }
Пример #2
0
 async void Connect(int port)
 {
     byte[] connect = new ServerHeader()
     {
         header = Header.ReqConnect, port = port
     }.ToByteArray();
     while (!isRunTick)
     {
         socket.Send(connect, 0, connect.Length, remoteEnd);
         await Task.Delay(10);
     }
 }
        public static int Main(string[] args)
        {
            var tests = Layout.Create()
                        .Add("plaintext", Content.From(Resource.FromString("Hello, World!")))
                        .Add("fortunes", new FortuneHandlerBuilder())
                        .AddService <JsonResource>("json")
                        .AddService <DbResource>("db")
                        .AddService <QueryResource>("queries")
                        .AddService <UpdateResource>("updates")
                        .AddService <CacheResource>("cached-worlds")
                        .Add(ServerHeader.Create());

            return(Host.Create()
                   .Handler(tests)
                   .Run());
        }
Пример #4
0
        public BrowserClient(TcpClient client, ServerHeader _server_header)
        {
            WebClient    = client;
            ServerHeader = _server_header;

            StreamReader = new StreamReader(WebClient.GetStream());
            StreamWriter = new StreamWriter(WebClient.GetStream());
            BinaryWriter = new BinaryWriter(WebClient.GetStream());

            PlugInManager = new PlugIn.PlugInManager();


            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("[*] Server: CLIENT CONNECTED");

            Receive(); // Receive header
        }
Пример #5
0
        private void ReceiveHeader(IAsyncResult ar)
        {
            if (IsClientConnected())
            {
                int bytesReceived = tcpClient.Client.EndReceive(ar);
                if (bytesReceived != 0)
                {
                    Interlocked.Add(ref transferred, bytesReceived);
                    Interlocked.Add(ref received, bytesReceived);

                    if (bytesReceived == remaining)
                    {
                        AuthenticationCrypto.Decrypt(Buffer, 1, Buffer.Length - 1);
                        ServerHeader header = new ServerHeader(Buffer);

                        if (header.Opcode == Opcodes.SMSG_GM_MESSAGECHAT || header.Opcode == Opcodes.SMSG_MESSAGECHAT)
                        {
                            Debug.WriteLine(header.Opcode);
                        }


                        if (header.Size > 0)
                        {
                            index     = 0;
                            remaining = header.Size;
                            Buffer    = new byte[header.Size];
                            tcpClient.Client.BeginReceive(Buffer, index, remaining, SocketFlags.None, new AsyncCallback(ReceivePayload), header);
                        }
                        else
                        {
                            HandleIncoming(new PacketReader(header));
                            Start();
                        }
                    }
                    else
                    {
                        index     += bytesReceived;
                        remaining -= bytesReceived;
                        tcpClient.Client.BeginReceive(Buffer, index, remaining, SocketFlags.None, new AsyncCallback(ReceiveHeader), null);
                    }
                }
            }
        }
Пример #6
0
        public void EndResponse()
        {
            WebClient.Close();

            StreamReader.Close();
            StreamWriter.Close();
            BinaryWriter.Close();

            StreamReader.Dispose();
            StreamWriter.Dispose();
            BinaryWriter.Dispose();

            __RequestedDataBuffer = new byte[0];
            __RequestedDataPath   = "";

            ServerHeader = null;

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("[*] Server: DONE!");
        }
 /// <summary>
 /// Removes the Server header from all responses
 /// </summary>
 /// <param name="policies">The collection of policies</param>
 public static HeaderPolicyCollection RemoveServerHeader(this HeaderPolicyCollection policies)
 {
     return(policies.ApplyPolicy(ServerHeader.Remove()));
 }