private void OnAcceptSocket(IAsyncResult ar) { try { Socket socket = _listener.EndAcceptSocket(ar); if (socket.Connected) { if (SocketConnectionCheck.CheckConnection(socket, MaxIpConnectionCount, AntiDDosStatus)) { socket.NoDelay = _disableNagleAlgorithm; AcceptedConnections++; ConnectionData connectionInfo = new ConnectionData(socket, _parser.Clone() as IDataParser, AcceptedConnections) { Disconnected = OnChannelDisconnect }; OnClientConnected(connectionInfo); } } } catch { // ignored } try { _listener?.BeginAcceptSocket(OnAcceptSocket, _listener); } catch { // ignored } }
/// <summary> /// Prepares the connection details. /// </summary> /// <exception cref="SocketInitializationException"></exception> private void PrepareConnectionDetails() { try { SocketConnectionCheck.SetupTcpAuthorization(20000); _listener = new TcpListener(IPAddress.Any, _portInformation); _listener.Start(); _listener.BeginAcceptSocket(OnAcceptSocket, _listener); } catch (SocketException ex) { throw new SocketInitializationException(ex.Message); } }