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); } } } }
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()); }
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 }
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); } } } }
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())); }