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


C++ RakString::URLDecode方法代码示例

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


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

示例1: ProcessTCPPacket

void HTTPConnection::ProcessTCPPacket(Packet *packet)
{
    RakAssert(packet);

    // read all the packets possible
    if(packet->systemAddress == server)
    {
        if(incomingData.GetLength() == 0)
        {
            int response_code = atoi((char *)packet->data + strlen("HTTP/1.0 "));

            if(response_code > 299)
            {
                badResponses.Push(BadResponse(packet->data, response_code), _FILE_AND_LINE_ );
                //printf("Closed connection (Bad response 2)\n");
                CloseConnection();
                return;
            }
        }

        RakNet::RakString incomingTemp = RakNet::RakString::NonVariadic((const char*) packet->data);
        incomingTemp.URLDecode();
        incomingData += incomingTemp;

        //	printf((const char*) packet->data);
        //	printf("\n");

        RakAssert(strlen((char *)packet->data) == packet->length); // otherwise it contains Null bytes

        const char *start_of_body = strstr(incomingData, "\r\n\r\n");

        // besides having the server close the connection, they may
        // provide a length header and supply that many bytes
        if(
            // Why was start_of_body here? Makes the GET command fail
            // start_of_body &&
            connectionState == CS_PROCESSING)
        {
            /*
            // The stupid programmer that wrote this originally didn't think that just because the header contains this value doesn't mean you got the whole message
            if (strstr((const char*) packet->data, "\r\nConnection: close\r\n"))
            {
            	CloseConnection();
            }
            else
            {
            */
            long length_of_headers;
            if (start_of_body)
            {
                length_of_headers = (long)(start_of_body + 4 - incomingData.C_String());
                const char *length_header = strstr(incomingData, "\r\nLength: ");

                if(length_header)
                {
                    long length = atol(length_header + 10) + length_of_headers;

                    if((long) incomingData.GetLength() >= length)
                    {
                        //printf("Closed connection (Got all data due to length header)\n");
                        CloseConnection();
                    }
                }
            }
            else
            {
                // No processing needed
            }


            //}
        }
    }
}
开发者ID:LunaticEdit,项目名称:RancerZero,代码行数:74,代码来源:HTTPConnection.cpp


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