private void InitSocketAsyncPool() { int netReceiveBufferSize = ServerConfig.NetReceiveBufferSize; if (netReceiveBufferSize <= 0) { netReceiveBufferSize = 1024; } _BufferManager = new BufferManager(netReceiveBufferSize * ServerConfig.MaxConnects, netReceiveBufferSize); try { _BufferManager.InitBuffer(); } catch (Exception ex) { Logger.Error(true, "", ex); throw; } _SocketAsyncPool = new SocketAsyncEventArgsProxyPool(); SocketAsyncEventArgsEx socketEventArg; for (int i = 0; i < ServerConfig.MaxConnects; i++) { socketEventArg = new SocketAsyncEventArgsEx(); _BufferManager.SetBuffer(socketEventArg); socketEventArg.Initialize();//初始化缓存接口 _SocketAsyncPool.Push(new SocketAsyncEventArgsProxy(socketEventArg)); } }
public override void Stop() { if (_SocketConnector != null) { _SocketConnector.NewClientConnected -= tcpSocketListener_NewClientAccepted; _SocketConnector.Stop(); } if (_Listeners != null && _Listeners.Count > 0) { foreach (ISocketListener socketListener in _Listeners) { socketListener.Stop(); socketListener.NewClientAccepted -= tcpSocketListener_NewClientAccepted; socketListener.Error -= tcpSocketListener_Error; socketListener.Stopped -= tcpSocketListener_Stopped; } _Listeners.Clear(); _Listeners = null; } if (_SocketAsyncPool != null) { _SocketAsyncPool.Clear(); _SocketAsyncPool = null; } _BufferManager = null; base.Stop(); }