Exemplo n.º 1
0
        private void ProcessAccept(SocketAsyncEventArgs acceptEventArgs)
        {
            App.Logger.Info("Client connection accepted. Local Address: {0}, Remote Address: {1}",
                            acceptEventArgs.AcceptSocket.LocalEndPoint, acceptEventArgs.AcceptSocket.RemoteEndPoint);

            AsyncSocketUserToken userToken = AsyncSocketUserTokenPool.Pop();

            AsyncSocketUserTokenList.Add(userToken); //添加到正在连接列表
            userToken.ConnectSocket   = acceptEventArgs.AcceptSocket;
            userToken.ConnectDateTime = DateTime.Now;

            try
            {
                bool willRaiseEvent = userToken.ConnectSocket.ReceiveAsync(userToken.ReceiveEventArgs); //投递接收请求
                if (!willRaiseEvent)
                {
                    lock (userToken)
                    {
                        ProcessReceive(userToken.ReceiveEventArgs);
                    }
                }
            }
            catch (Exception E)
            {
                App.Logger.Error("Accept client {0} error, message: {1}", userToken.ConnectSocket, E.Message);
                App.Logger.Error(E.StackTrace);
            }

            StartAccept(acceptEventArgs); //把当前异步事件释放,等待下次连接
        }
Exemplo n.º 2
0
        private void ProcessAccept(SocketAsyncEventArgs acceptEventArgs)
        {
            Console.WriteLine("Client connection accepted. Local Address: {0}, Remote Address: {1}",
                              acceptEventArgs.AcceptSocket.LocalEndPoint, acceptEventArgs.AcceptSocket.RemoteEndPoint);

            AsyncSocketUserToken userToken = AsyncSocketUserTokenPool.Pop();

            AsyncSocketUserTokenList.Add(userToken);
            userToken.ConnectSocket   = acceptEventArgs.AcceptSocket;
            userToken.ConnectDateTime = DateTime.Now;

            try
            {
                bool willRaiseEvent = userToken.ConnectSocket.ReceiveAsync(userToken.ReceiveEventArgs);
                if (!willRaiseEvent)
                {
                    lock (userToken)
                    {
                        ProcessReceive(userToken.ReceiveEventArgs);
                    }
                }
            }
            catch (Exception E)
            {
                Console.WriteLine("Accept client {0} error, message: {1}", userToken.ConnectSocket, E.Message);
                Console.WriteLine(E.StackTrace);
            }

            StartAccept(acceptEventArgs);
        }
Exemplo n.º 3
0
 public SocketClient() : base(1)
 {
     UserToken = AsyncSocketUserTokenPool.Pop();
     AsyncSocketUserTokenList.Add(UserToken);
 }