如何从tcp数据解析http请求体

如何从tcp数据解析http请求体,c,networking,tcp,C,Networking,Tcp,我正在学习windows网络编程,现在有一个问题,如何从tcp数据包中获取http请求体,代码如下: switch (ntohs(tcpHeader->destinationPort)) { case 21: break; case 80: decodeHttp(((char*)tcpHeader+sizeof(TCPHeader)),ipHeader->ipDestination); break; } void decodeHttp(char*

我正在学习windows网络编程,现在有一个问题,如何从tcp数据包中获取http请求体,代码如下:

    switch (ntohs(tcpHeader->destinationPort))
{
case 21:

    break;
case 80:
    decodeHttp(((char*)tcpHeader+sizeof(TCPHeader)),ipHeader->ipDestination);
    break;
}

void decodeHttp(char* pData,DWORD destIp){

in_addr addr = *(in_addr*)&destIp;
char ip[32];

strcpy_s(ip,inet_ntoa(addr));
printf(" %s \r\n",ip);
printf("--------------------------\r\n");
printf("%s ",pData);

如果我只是打印“pData”,只有http头,正文是凌乱的代码

您是否使用原始套接字?为什么?否则,您永远不必在应用程序级别处理TCP头。如果你想解析HTTP,不要使用原始套接字。看起来pData已经成功地通过TCP头进行了索引,所以我不理解这个问题。请添加pData打印内容的副本,并解释要在何处将HTTP头与正文分开。是的,我使用的是原始套接字。我想获取HTTP响应内容。但我无法从数据解析它,如果我只是打印它,只有HTTP头,内容是混乱的代码。