public override int Send(long conn_idx, ByteArray by)
    {
        base.Send(conn_idx, by);

        if (m_socket == null)
        {
            return(0);
        }

        if (by.Available >= SocketID.SendRecvMaxSize)
        {
            by.Skip(SocketID.PacketHeadSize);
            ushort header = by.ReadUShort();
            Log.Error("发送数据量过大:" + header);
            return(0);
        }
        int data_len = by.Available - SocketID.PacketHeadSize;

        by.ModifyUShort((ushort)data_len, 0);

        m_socket.Send(conn_idx, by.GetBuffer(), 0, (int)by.Available);
        return((int)by.Available);
    }