Beispiel #1
0
        static async Task RunViaSockets()
        {
            using (var server = new SimplSocketServer(
                       () => new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            {
                NoDelay = true
            }))
            {
                server.MessageReceived += (s, e) =>
                {
                    var blob = e.ReceivedMessage.Message;
                    ReverseServer.Reverse(blob);
                    server.Reply(blob, e.ReceivedMessage);
                };

                server.Listen(new IPEndPoint(IPAddress.Loopback, 5000));
                await Console.Out.WriteLineAsync(
                    "Server running; type 'q' to exit, anything else to broadcast");

                string line;
                while ((line = await Console.In.ReadLineAsync()) != null)
                {
                    if (line == "q")
                    {
                        break;
                    }

                    var blob = Encoding.UTF8.GetBytes(line);
                    server.Broadcast(blob);

                    await Console.Out.WriteLineAsync(
                        $"Broadcast {blob.Length} bytes to {server.CurrentlyConnectedClientCount} clients");
                }
            }
        }