/// <summary> /// 监听 /// </summary> /// <returns></returns> public bool Listen() { Start(); _sessioinListen.Start(); _listenSocket = new Socket(_settings.LocalEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); try { _listenSocket.ReceiveBufferSize = _settings.BufferSize; _listenSocket.SendBufferSize = _settings.BufferSize; if (_settings.LocalEndPoint.AddressFamily == AddressFamily.InterNetworkV6) { // Set dual-mode (IPv4 & IPv6) for the socket listener. _listenSocket.SetSocketOption(SocketOptionLevel.IPv6, (SocketOptionName)27, false); _listenSocket.Bind(new IPEndPoint(IPAddress.IPv6Any, _settings.LocalEndPoint.Port)); } else { _listenSocket.Bind(_settings.LocalEndPoint); } // Start the server. _listenSocket.Listen(_settings.Backlog); TraceLog.ReleaseWrite("The socket-server {0}:{1} is listenning", _settings.LocalEndPoint.Address, _settings.LocalEndPoint.Port); // Post accepts on the listening socket.); SocketAsyncEventArgs acceptEventArg; if (!_acceptPool.TryPop(out acceptEventArg)) { acceptEventArg = CreateAcceptEventArgs(); } StartAccept(acceptEventArg); return(true); } catch (SocketException sex) { TraceLog.WriteError("The socket-server {0}:{1} listen error:{2}-{3}", _settings.LocalEndPoint.Address, _settings.LocalEndPoint.Port, sex.SocketErrorCode, sex); } catch (Exception ex) { TraceLog.WriteError("The socket-server {0}:{1} error:{2}", _settings.LocalEndPoint.Address, _settings.LocalEndPoint.Port, ex); } return(false); }