示例#1
0
        public void Serve()
        {
            var server = new Server {
                Port = PORT
            };

            bool[] clientSucceeded = new bool[3];

            server.ClientConnected += (sender, e) => {
                Console.WriteLine("Client connected!");

                using (var stream = e.Client.GetStream())
                {
                    using (var reader = new StreamReader(stream))
                    {
                        var clientId = int.Parse(reader.ReadLine());
                        clientSucceeded[clientId] = true;
                    }
                }
                e.Client.Close();
            };

            server.Start();

            Task.WaitAll(
                Task.Run(() => this.CreateClient(0)),
                Task.Run(() => this.CreateClient(1)),
                Task.Run(() => this.CreateClient(2))
                );

            server.Stop();
            server.Wait();

            Assert.True(clientSucceeded[0], $"Client 0 should have succeeded");
            Assert.True(clientSucceeded[1], $"Client 1 should have succeeded");
            Assert.True(clientSucceeded[2], $"Client 2 should have succeeded");
        }