コード例 #1
0
        //关闭客户端
        void CloseClientSocketEx(SocketAsyncEventArgs e, SocketColseType colseType)
        {
            AsyncUserToken token = e.UserToken as AsyncUserToken;

            if (token != null)
            {
                if (token.Socket != null && token.Socket.Connected)
                {
                    token.Socket.Shutdown(SocketShutdown.Both);
                    token.Socket.Close();
                }
            }
            onSocketClose(token.ConnId, colseType);
            semaphore.Release();
            lock (m_pool)
            {
                if (m_pool.Count < m_maxConnectNum)
                {
                    e.UserToken = new AsyncUserToken();
                    m_pool.Push(e);
                }
            }
        }
コード例 #2
0
 /// <summary>
 /// socket关闭
 /// </summary>
 /// <param name="token"></param>
 private static void Socket_SocketClose(Guid connId, SocketColseType colseType)
 {
     dic_UserInfo.TryRemove(connId, out UserInfo tk);
 }
コード例 #3
0
 /// <summary>
 /// 连接关闭
 /// </summary>
 void onSocketClose(Guid connId, SocketColseType colseType)
 {
     dicSocketEventArgs.TryRemove(connId, out UserSocketEventArgs userSocket);
     SocketClose?.Invoke(connId, colseType);
 }