示例#1
0
        private void Accept(SaeaAwaiter awaiter, SocketError socketError)
        {
            if (socketError == SocketError.Success)
            {
                var acceptedSocket = awaiter.Saea.AcceptSocket;
                var session        = SessionPool.Take();
                session.Attach(acceptedSocket);
                this.TcpSocketSaeaSessions.Add(session);
                this.CompletetionNotify?.Invoke(TcpSocketCompletionNotify.OnConnected, session);

                session.StartProcess();
            }
            else
            {
                LogHelper.WriteLog("server_accept-fail");
            }

            if (!this._isRuning)
            {
                return;
            }

            awaiter.Saea.AcceptSocket = null;
            SaeaExHelper.AcceptAsync(_listener, awaiter, Accept);
        }
示例#2
0
        public void Listen(IPEndPoint ipendPoint)
        {
            this._isRuning = true;

            _listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            SetSocketOptions();
            _listener.Bind(ipendPoint);
            _listener.Listen(_config.PendingConnectionBacklog);

            var awaiter = HandlerSaeaPool.Take();

            SaeaExHelper.AcceptAsync(_listener, awaiter, Accept);
        }