protected void _realSendMessage()
    {
        if(null == _m_scSocket)
            return ;
        
        if(!_m_scSocket.isConnected())
        {
            ALBasicSendingClientManager.getInstance().addSendSocket(this);
            return ;
        }

        boolean needAddToSendList = false;
        _lockBuf();

        while(!_m_lSendBufferList.isEmpty())
        {
            //Socket 允许写入操作时
            ByteBuffer buf = _m_lSendBufferList.getFirst();

            if(buf.remaining() <= 0)
            {
                ALServerLog.Error("try to send a null buffer");
                ALServerLog.Error("Wrong buffer:");
                for(int i = 0; i < buf.limit(); i++)
                {
                    ALServerLog.Error(buf.get(i) + " ");
                }
            }
            
            try {
                _m_scSocket.write(buf);
                
                //判断写入后对应数据的读取指针位置
                if(buf.remaining() <= 0)
                    _m_lSendBufferList.pop();
                else
                    break;
            }
            catch (IOException e)
            {
                ALServerLog.Error("Client Socket send message error! user[" + _m_sUserName + "]");
                e.printStackTrace();
                break;
            }
        }
        
        //当需要发送队列不为空时，继续添加发送节点
        if(!_m_lSendBufferList.isEmpty())
            needAddToSendList = true;
        
        _unlockBuf();
        
        if(needAddToSendList)
            ALBasicSendingClientManager.getInstance().addSendSocket(this);
    }