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); }
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); }