如何从tcp数据解析http请求体
我正在学习windows网络编程,现在有一个问题,如何从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*
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头,内容是混乱的代码。