public WebServer(int port, bool localOnly, ReqRespHandler <HttpRequest, HttpResponse> reqHandler) { this.reqHandler = reqHandler; int maxNumberOfConnections = 1000; int excessSaeaObjectsInPool = 200; int backlog = 100; int maxSimultaneousAcceptOps = 100; var setting = new NewConnListenerSettings(maxNumberOfConnections, excessSaeaObjectsInPool, backlog, maxSimultaneousAcceptOps, new IPEndPoint(localOnly ? IPAddress.Loopback : IPAddress.Any, port));//check only local host or not CreateContextPool(maxNumberOfConnections); newConnListener = new NewConnectionListener(setting, clientSocket => { //when accept new client HttpContext context = this.contextPool.Pop(); context.BindSocket(clientSocket); //*** bind to client socket context.StartReceive(); //start receive data }); }
public void Start() { if (_isRunning) { return; } //------------------------------ try { int maxNumberOfConnections = 500; int excessSaeaObjectsInPool = 200; int backlog = 100; int maxSimultaneousAcceptOps = 100; var setting = new NewConnListenerSettings(maxNumberOfConnections, excessSaeaObjectsInPool, backlog, maxSimultaneousAcceptOps, new IPEndPoint(_localOnly ? IPAddress.Loopback : IPAddress.Any, _port));//check only local host or not CreateContextPool(maxNumberOfConnections); _newConnListener = new NewConnectionListener(setting, clientSocket => { //when accept new client HttpContext context = _contextPool.Pop(); context.BindSocket(clientSocket); //*** bind to client socket context.StartReceive(); //start receive data }); //start web server _isRunning = true; _newConnListener.StartListening(); } catch (Exception ex) { } }