Ejemplo n.º 1
0
 /// <summary>
 /// 客户端断开连接
 /// </summary>
 /// <param name="token"> 断开连接的用户对象</param>
 /// <param name="error">断开连接的错误编码</param>
 public void ClientClose(UserToken token,string error) {
     if (token.conn != null) {
         lock (token) { 
          //通知应用层面 客户端断开连接了
             center.ClientClose(token, error);
             token.Close();
             //加回一个信号量,供其它用户使用
             pool.push(token);
             acceptClients.Release();                   
         }
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 客户端断开连接
 /// </summary>
 /// <param name="token">断开连接的用户对象</param>
 /// <param name="error">断开连接的错误编码</param>
 public void ClientClose(UserToken token, string error)
 {
     if (token.conn != null)
     {
         //防止关闭释放的时候,出现多线程的访问,也是避免同一个userToken同时有多个线程操作
         lock (token) {
             //通知应用层面,客户端断开连接了
             Center.ClientClose(token, error);
             token.Close();
             pool.Push(token);
         }
     }
 }
Ejemplo n.º 3
0
 // 客户端断开连接 断开连接的错误编码
 public void ClientClose(UserToken token, string error)
 {
     if (token.conn != null)
     {
         lock (token)
         {
             //通知应用层 客户端断开连接
             token.Close();
             pool.Push(token);
             acceptClients.Release();
         }
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 客户端断开连接
 /// </summary>
 /// <param name="token">断开连接的用户对象</param>
 /// <param name="error">断开连接的错误编码</param>
 public void ClientClose(UserToken token, string error)
 {
     if (token.conn != null)
     {
         lock (token)
         {
             //通知应用层面,客户端断开连接
             center.ClientClose(token, error);
             token.Close();
             pool.push(token);
             //信号量+1,供其他用户使用
             acceptClients.Release();
         }
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 客户端断开连接
        /// </summary>
        /// <param name="token">断开连接的用户</param>
        public void ClientClose(UserToken token, string error)
        {
            if (token.conn != null)
            {
                lock (token) {
                    //TODO 通知应用层 客户端断开连接
                    center.ClientClose(token, error);

                    token.Close();
                    //加回一个信号量 供其他用户使用
                    pool.Push(token);
                    acceptClient.Release();
                }
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 客户端断开连接
 /// </summary>
 /// <param name="token">断开连接的用户对象</param>
 /// <param name="error"断开连接的错误编码></param>
 public void ClientClose(UserToken token, string error)
 {
     if (token.conn != null)
     {
         lock (token)
         {
             //通知应用层面,客户端断开连接
             center.ClientClose(token, error);
             token.Close();
             //返回用户池
             pool.Push(token);
             //加回一个信号量,供其他用户使用
             acceptClient.Release();
         }
     }
 }
Ejemplo n.º 7
0
        public void ProcessSend(SocketAsyncEventArgs e)
        {
            UserToken token = e.UserToken as UserToken;

            if (e.SocketError != SocketError.Success)
            {
                ClientClose(token, e.SocketError.ToString());
            }
            else
            {
                if (token.CheckWriteQueue())
                {
                    //消息发送成功,回调成功
                    token.Writed();
                }
                else
                {
                    token.Close();
                    pool.Push(token);
                }
            }
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 客户端断开连接
 /// </summary>
 /// <param name="token">断开的用户对象</param>
 /// <param name="error">断开连接的错误编码</param>
 public void ClientClose(UserToken token, string error)
 {
     if (token.Conn != null)
     {
         lock (token)
         {
             //通知应用层客户端断开连接
             token.Close();
             //将连接还给连接池
             _pool.Push(token);
             //释放信号量,加回一个供其他用户使用
             _acceptClients.Release();
         }
     }
 }