private void Open(EndPoint localEndPoint, int pendingConnections) { try { handle = SocketFactory.CreateNonBlockingTcpSocket(); IPEndPoint ipep = (IPEndPoint)localEndPoint; handle.UserSocket.ExclusiveAddressUse = false; handle.Bind(ipep); handle.Listen(pendingConnections); this.reactor.RegisterHandler(this, EventType.ACCEPT_EVENT); log.Info("Acceptor listening on {0} : {1}", ipep.Address.ToString(), ipep.Port.ToString()); } catch (ObjectDisposedException ex) { log.Warn(ex, "Acceptor Socket has been disposed"); } catch (SocketException ex) { log.Error(ex, String.Format("Acceptor failed to bind to local endpoint. WSAError - {0}", ex.SocketErrorCode.ToString())); Dispose(); } }
public void AddConnection(EndPoint remoteAddress, bool keepAlive, bool stream) { IServiceHandler serviceHandler; if (keepAlive && !stream) { serviceHandler = new TcpVarData_SockServiceHandler(reactor, true, 5000); } else if (!keepAlive && !stream) { serviceHandler = new TcpVarData_SockServiceHandler(reactor, false, 0); } else { serviceHandler = new TcpEoLData_SockServiceHandler(reactor); } ISocket socket = SocketFactory.CreateNonBlockingTcpSocket(); serviceHandler.Handle = socket; serviceHandler.ConnectionNotification += ConnectNotification; connector.Connect(serviceHandler, remoteAddress, Connection_Mode.ASYNC); }