Пример #1
0
        private async void ServerOnClientConnected(object sender, TcpClientEventArgs e)
        {
            _server.BeginAccept();

            var client = new Socks5Client(e.Client)
            {
                ProxySending = args => ProxySending?.Invoke(this, args),
                ProxyReceiving = args => ProxyReceiving?.Invoke(this, args)
            };

            client.InternalClient.ClientDisconnected += (o, args) 
                => ClientDisconnected?.Invoke(this, new SocksClientEventArgs(client));

            if (await HandleGreeting(client))
                ClientConnected?.Invoke(this, new SocksClientEventArgs(client));
            else
                InvalidClientConnected?.Invoke(this, new TcpClientEventArgs(e.Client));

            await HandleConnectionInitiate(client);

            var buf = client.Receive(new byte[100]);
            client.StartTunneling();

            _clients.Add(client);
        }
Пример #2
0
        private static void ServerOnClientConnected(object sender, ClientEventArgs clientEventArgs)
        {
            Console.WriteLine("Client connected!");

            var client = clientEventArgs.Client;
            client.ReceiveCompleted += ClientOnReceiveCompleted;
            client.BeginReceive(new byte[2048]);

            server.BeginAccept();
        }