现在的位置: 首页 > 综合 > 正文

C++对Chunked数据的处理

2013年10月02日 ⁄ 综合 ⁄ 共 781字 ⁄ 字号 评论关闭
ResponseStream *ParseChunkData(char* pChunkData, int nChunkDataSize)
{
	if (pChunkData == NULL || nChunkDataSize < 2)
	{
		return NULL;
	} //if
	auto pstream = new ResponseStream;
	//获取Chunked数据大小
	int crlf = 2, block_size = 0;
	LPSTR pBlockDataBegin = pChunkData, pBlockDataEnd = pChunkData, pDataEnd = pChunkData + nChunkDataSize;
	while(pBlockDataBegin < pDataEnd)
	{
		pBlockDataEnd = strstr(pBlockDataBegin, "\r\n");
		if (pBlockDataEnd == NULL)
		{
			assert(!"非法Chunk数据!");
			return pstream;
		}
		pBlockDataEnd[0] = '\0';
		block_size = Int32::TryParse(pBlockDataBegin, 16);
		pBlockDataEnd[0] = '\r';
		if (block_size == 0)
		{
			break;
		} //if
		pstream->Write(pBlockDataEnd + crlf, block_size);
		pBlockDataBegin = pBlockDataEnd + crlf + block_size;
		//干掉换行符
		crlf = 0;
		while(*pBlockDataBegin == '\r' || *pBlockDataBegin == '\n')
		{
			crlf++;
			pBlockDataBegin += 1;
		}
	}
	return pstream;
}

这里是对Chunked数据的简易处理方法,如果是动态接收网页数据时需要其它处理。

抱歉!评论已关闭.