private void CloseClientSocket(string uid, bool isReceive = false)
        {
            if (string.IsNullOrEmpty(uid))
            {
                return;
            }
            DuplexSocketAsyncEventArgsWithId _saea = m_readWritePool.FindByUID(uid);

            if (_saea != null)
            {
                m_bufferManager.FreeBuffer(_saea.ReceiveSAEA);
                Socket _socket = (_saea.ReceiveSAEA.UserToken as AsyncUserToken).Socket;
                try
                {
                    _socket.Shutdown(SocketShutdown.Both);
                    _socket = null;
                }
                catch
                {
                    LogOutEvent(null, SocketMessageType.Error, "客户端已经关闭");
                    //OnSended(uid, "客户端已经关闭");
                }
                this.m_semaphoreAcceptedClients.Release();
                Interlocked.Decrement(ref this.m_numConnections);
                this.m_readWritePool.Push(_saea);
                if (this.m_readWritePool.Count == 1)
                {
                    StartAccept(null);
                }
            }
        }