private void TestMaxConnectionNumber(int maxConnectionNumber) { var server = new TestServer(); var defaultConfig = DefaultServerConfig; var config = new ServerConfig { Ip = defaultConfig.Ip, LogCommand = defaultConfig.LogCommand, MaxConnectionNumber = maxConnectionNumber, Mode = defaultConfig.Mode, Name = defaultConfig.Name, Port = defaultConfig.Port }; server.Setup(string.Empty, config, string.Empty); List <Socket> sockets = new List <Socket>(); try { server.Start(); EndPoint serverAddress = new IPEndPoint(IPAddress.Parse("127.0.0.1"), m_Config.Port); for (int i = 0; i < maxConnectionNumber; i++) { Socket socket = new Socket(serverAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect(serverAddress); Stream socketStream = new NetworkStream(socket); StreamReader reader = new StreamReader(socketStream, Encoding.Default, true); reader.ReadLine(); sockets.Add(socket); } using (Socket trySocket = new Socket(serverAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp)) { Console.WriteLine("Start to connect try socket"); trySocket.Connect(serverAddress); var innerSocketStream = new NetworkStream(trySocket); innerSocketStream.ReadTimeout = 500; using (StreamReader tryReader = new StreamReader(innerSocketStream, Encoding.Default, true)) { Assert.Throws <IOException>(delegate { string welcome = tryReader.ReadLine(); Console.WriteLine(welcome); }); } } } catch (Exception e) { Console.WriteLine(e.Message + " " + e.StackTrace); } finally { sockets.ForEach(s => { s.Shutdown(SocketShutdown.Both); s.Close(); }); server.Stop(); } }