Beispiel #1
0
 public override UInt16 Write(Byte[] buf, UInt16 offset, int len)
 {
     if (len >= offset + 4)
     {
         NetPacketHeader.HtonFloat(buf, offset, (float)m_Vlue);
         return(4);
     }
     return(0);
 }
Beispiel #2
0
 public override UInt16 Read(Byte[] buf, UInt16 offset, int len)
 {
     if (len >= offset + 8)
     {
         m_Vlue = NetPacketHeader.NtohDouble(buf, offset);
         return(8);
     }
     return(0);
 }
Beispiel #3
0
        public NetPacketHeader Clone()
        {
            NetPacketHeader header = new NetPacketHeader();

            header.m_nPacketId = m_nPacketId;
            header.m_nIsZip    = m_nIsZip;
            header.m_nBodyLen  = m_nBodyLen;
            return(header);
        }
Beispiel #4
0
 public override UInt16 Write(Byte[] buf, UInt16 offset, int len)
 {
     if (len >= offset + 8)
     {
         NetPacketHeader.HtonDouble(buf, offset, (double)m_Vlue);
         return(8);
     }
     return(0);
 }
Beispiel #5
0
 public override UInt16 Write(Byte[] buf, UInt16 offset, int len)
 {
     if (len >= offset + 2)
     {
         NetPacketHeader.HtonUInt16(buf, offset, (UInt16)m_Vlue);
         return(2);
     }
     return(0);
 }
Beispiel #6
0
        public override UInt16 Read(Byte[] buf, UInt16 offset, int len)
        {
            //int i = offset;
            //while (buf[i] != 0)
            //{
            //    i++;
            //}
            ushort length = NetPacketHeader.NtohUint16(buf, offset);
            string str    = Encoding.UTF8.GetString(buf, offset + 2, length);

            m_Vlue = str;
            return((UInt16)(length + 2));
        }
Beispiel #7
0
        public static String NtohString(Byte[] buf, int offset, out UInt16 len)
        {
            ushort length = NetPacketHeader.NtohUint16(buf, offset);

            if (m_IsBigEndian)
            {
                Array.Reverse(buf, offset, length + 2);
            }
            len = (ushort)(length + 2);
            string str = Encoding.UTF8.GetString(buf, offset + 2, length);

            return(str);
        }
Beispiel #8
0
 protected UInt16 WriteArrayHead(Byte[] buf, UInt16 offset)
 {
     if (m_bBigArray)
     {
         NetPacketHeader.HtonUInt16(buf, offset, m_nLen);
         return(2);
     }
     else
     {
         buf[offset] = (Byte)m_nLen;
     }
     return(1);
 }
Beispiel #9
0
 protected UInt16 ReadArrayHead(Byte[] buf, UInt16 offset)
 {
     if (m_bBigArray)
     {
         m_nLen = NetPacketHeader.NtohUint16(buf, offset);
         return(2);
     }
     else
     {
         m_nLen = buf[offset];
     }
     return(1);
 }
Beispiel #10
0
        public UInt16 Write(Byte[] buf)
        {
            UInt16 offset = NetPacketHeader.GetHeadLen();

            if (m_datas == null)
            {
            }
            else
            {
                Array.ConstrainedCopy(m_datas, 0, buf, offset, m_datas.Length);
                offset += (UInt16)m_datas.Length;
            }
            m_header.WriteHead(buf);
            return(offset);
        }
Beispiel #11
0
        public override UInt16 Write(Byte[] buf, UInt16 offset, int len)
        {
            UInt16 nResult = 0;

            if (null != m_Vlue)
            {
                String str = (string)m_Vlue;

                Byte[] strbuf = Encoding.UTF8.GetBytes(str);
                NetPacketHeader.HtonUInt16(buf, offset, (ushort)strbuf.Length);
                Array.ConstrainedCopy(strbuf, 0, buf, offset + 2, strbuf.Length);
                nResult = (UInt16)(strbuf.Length + 2);
            }
            return(nResult);
        }
Beispiel #12
0
        public static UInt16 HtonString(Byte[] buf, int offset, string vl)
        {
            UInt16 nResult = 0;

            if (null != vl)
            {
                String str = vl;

                Byte[] strbuf = Encoding.UTF8.GetBytes(str);

                NetPacketHeader.HtonUInt16(buf, offset, (ushort)strbuf.Length);
                Array.ConstrainedCopy(strbuf, 0, buf, offset + 2, strbuf.Length);
                nResult = (UInt16)(strbuf.Length + 2);
            }
            return(nResult);
        }
Beispiel #13
0
        public NetPacket(ushort id, byte[] datas, ushort length)
        {
            m_header            = new NetPacketHeader();
            m_header.PacketId   = id;
            m_header.BodyLength = length;
            if (datas == null || length == 0)
            {
                m_header.BodyLength = 0;
            }
            else
            {
                m_header.BodyLength = length;

                m_datas = new byte[length];
                Array.ConstrainedCopy(datas, 0, m_datas, 0, length);
            }
        }
Beispiel #14
0
        public override UInt16 Write(Byte[] buf, UInt16 offset, int len)
        {
            UInt16 nResult = offset;
            UInt16 n       = WriteArrayHead(buf, offset);

            if (len > offset + n + m_nLen * 2)
            {
                offset += n;
                for (n = 0; n < m_nLen; ++n)
                {
                    NetPacketHeader.HtonUInt16(buf, offset, (UInt16)m_Vlue);
                    offset += 2;
                }
                return((UInt16)(offset - nResult));
            }
            return(0);
        }
Beispiel #15
0
        public override UInt16 Write(Byte[] buf, UInt16 offset, int len)
        {
            double[] buffer  = (double[])m_Vlue;
            UInt16   nResult = offset;
            UInt16   n       = WriteArrayHead(buf, offset);

            offset += n;
            if (len >= offset + (8 * m_nLen))
            {
                for (n = 0; n < m_nLen; ++n)
                {
                    NetPacketHeader.HtonDouble(buf, offset, buffer[n]);
                    offset += 8;
                }
                return((UInt16)(offset - nResult));
            }
            return(0);
        }
Beispiel #16
0
        public override UInt16 Read(Byte[] buf, UInt16 offset, int len)
        {
            UInt16[] buffer;
            UInt16   nResult = offset;
            UInt16   n       = ReadArrayHead(buf, offset);

            if (len > offset + n + m_nLen * 2)
            {
                offset += n;
                buffer  = new UInt16[m_nLen];
                for (n = 0; n < m_nLen; ++n)
                {
                    buffer[n] = NetPacketHeader.NtohUint16(buf, offset);
                    offset   += 2;
                }
                m_Vlue = buffer;
                return((UInt16)(offset - nResult));
            }
            return(0);
        }
Beispiel #17
0
        public override UInt16 Read(Byte[] buf, UInt16 offset, int len)
        {
            double[] buffer;
            UInt16   nResult = offset;
            UInt16   n       = ReadArrayHead(buf, offset);

            offset += n;
            if (len >= offset + (m_nLen * 8))
            {
                buffer = new double[m_nLen];
                for (n = 0; n < m_nLen; ++n)
                {
                    buffer[n] = NetPacketHeader.NtohDouble(buf, offset);
                    offset   += 8;
                }
                m_Vlue = buffer;
                return((UInt16)(offset - nResult));
            }
            return(0);
        }
Beispiel #18
0
 public NetPacket(NetPacketHeader header)
 {
     m_header = header.Clone();
 }
        private bool _TcpRecv()
        {
            int recvlen = 0;

            if (m_pNetPacketHeader.PacketId > 0)
            {
                recvlen = m_pNetPacketHeader.BodyLength;
                //-m_pNetPacketHeader.GetHeadLen();
            }
            else
            {
                recvlen = NetPacketHeader.GetHeadLen();
            }

            if (m_TcpSocket.Available <= 0)
            {
                return(false);
            }

            m_nRecvBufferOffset += m_TcpSocket.Receive(m_Recvbuffer, m_nRecvBufferOffset, recvlen - m_nRecvBufferOffset, 0);

            if (m_nRecvBufferOffset < recvlen)
            {
                Debug.Log("bao ti shu liang bu gou");
                return(false);
            }

            if (m_pNetPacketHeader.PacketId > 0)
            {
                NetPacket packet = null;

                //				string str = "";
                //				Debug.Log("m_pNetPacketHeader.BodyLength:" + m_pNetPacketHeader.BodyLength);
                //				for(int i = 0;i < m_pNetPacketHeader.BodyLength;i++){
                //					str += (m_Recvbuffer[i] + "_");
                //				}
                //				Debug.Log("m_Recvbuffer:" + str);
                packet = new NetPacket(m_pNetPacketHeader);
                packet.Read(m_Recvbuffer, m_pNetPacketHeader.BodyLength);
                m_RecvQueue.Enqueue(packet);

                m_pNetPacketHeader.PacketId = 0;
                m_nRecvBufferOffset         = 0;
            }
            else
            {   //read packet header
                if (m_pNetPacketHeader.ReadHead(m_Recvbuffer))
                {
                    if (m_pNetPacketHeader.BodyLength <= 0)
                    {//dose not have body data
                        NetPacket msg = new NetPacket(m_pNetPacketHeader);
                        m_RecvQueue.Enqueue(msg);
                        //						Debug.Log("m_pNetPacketHeader.PacketId:" + m_pNetPacketHeader.PacketId);
                        //						Debug.Log("msg:" + msg.Count);
                        m_pNetPacketHeader.PacketId = 0;
                    }
                    m_nRecvBufferOffset = 0;
                }
                else
                {
                    m_TcpSocket.Close(1);
                    return(false);
                }
            }
            return(true);
        }