public void Start() { // reset the stopping flag acceptStopped = false; // create connection count limiter maxConnectionsEnforcer = maxSimultaneousConnections < 0 ? (IMaxConnectionsEnforcer) new NoMaxConnectionEnforcer() : new MaxConnectionsEnforcer(MaxSimultaneousConnections); // create listen socket socket = new Socket(ListenAddress.AddressFamily, socketType, protocolType); #if !__MonoCS__ if (ListenAddress.AddressFamily == AddressFamily.InterNetworkV6) { socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, Ipv6Only ? 1 : 0); } #endif // bind it socket.Bind(new IPEndPoint(ListenAddress, ListenPort)); // start listening socket.Listen(MaxPendingConnections); // start connection acceptin' StartAccept(); }