当前位置: 首页>>代码示例>>C++>>正文


C++ PacketBuffer::getHeader方法代码示例

本文整理汇总了C++中PacketBuffer::getHeader方法的典型用法代码示例。如果您正苦于以下问题:C++ PacketBuffer::getHeader方法的具体用法?C++ PacketBuffer::getHeader怎么用?C++ PacketBuffer::getHeader使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PacketBuffer的用法示例。


在下文中一共展示了PacketBuffer::getHeader方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ntohl

//
//We do two checks  to see that we have enough data to make
//a full packet. One check is to see that we have enough data
//the make a header. The second is to see if there is enough
//to make a packet with a header plus it's data.
//We return NULL if there wasn't
//enough data to make a full packet. If there is enough data
//we return _one_ complete packet, and make sure the buffer
//is ready to extract more packets, and recieve additional
//data.
//
//A full packet is the size of the packet header (all packets
//_must_ have full header, plus the size of any data. There
//doesn't always have to be any data with the packet.
//
PacketBuffer* BufferedSocket::parsForPacket()
{
    PacketBuffer* pPacket = NULL;
    char* phead = m_pbuffer;
    char* ptail = phead+m_nBytesInBuf;
    unsigned32 nSize;

    if(m_nBytesInBuf<PacketBuffer::getHeaderSize())
        return NULL;

    nSize = ntohl(*(unsigned32*)phead)+PacketBuffer::getHeaderSize();
    if((unsigned32)(ptail-phead) < nSize)
        return NULL;

    //copy in the header, then copy in packet data, less the header data
    pPacket = new PacketBuffer(0,nSize-PacketBuffer::getHeaderSize());    //new packet
    memcpy(pPacket->getHeader(),phead,PacketBuffer::getHeaderSize());
    pPacket->makeHostReady(true);       //convert header from network byte order
    if(nSize>PacketBuffer::getHeaderSize()) //if we have data after the header
        memcpy(pPacket->getBuffer(),phead+PacketBuffer::getHeaderSize(),pPacket->getBufferSize());

    phead += nSize;
    m_nBytesInBuf -= nSize;

    if(phead>=ptail)
    {
        //there is no more data in the buffer
        m_ptr = m_pbuffer;
        m_nBytesInBuf = 0;
    }
    else
    {
        //we need to move the unparsed data to the beginning of the buffer
        memmove(m_pbuffer,phead,m_nBytesInBuf);
        m_ptr = m_pbuffer+m_nBytesInBuf;
    }

    return pPacket;
}
开发者ID:patterson7019,项目名称:ssobjects,代码行数:54,代码来源:bufferedsocket.cpp


注:本文中的PacketBuffer::getHeader方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。