C:发送GET请求但wireshark没有抓到任何东西

时间:2015-09-22 09:29:37

标签: c sockets wireshark

我是C的新人,也是wireshark的新人。所以我试图将http GET请求发送到localhost并同时运行wireshark。但似乎我做错了,因为wireshark没有显示任何标题。所以这是我的C代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h> 
#include <sys/socket.h>
#include <pthread.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>

int main(int argc, char *argv[]) 
{
 int yes = 1;
 char buffer[1024];

 int newsockfd, portno, number, recv_length, sockfd;
 socklen_t clilen;
 struct sockaddr_in serv_addr, cli_addr;

 if (sockfd < 0) 
    error("ERROR opening socket");
 bzero((char *) &serv_addr, sizeof(serv_addr));

 serv_addr.sin_family = AF_INET;
 serv_addr.sin_addr.s_addr = 0;
 serv_addr.sin_port = htons(80);

 sockfd = socket(AF_INET, SOCK_STREAM, 0);

 connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr));
 number = send(sockfd, "GET /1/ HTTP/1.0\r\n\r\n", strlen("GET /1/ HTTP/1.0\r\n\r\n"), 0);

 recv_length = recv(sockfd, buffer, 1024, 0);
 printf("%s\n", buffer);
}

(我使用了一些我不会使用的其他变量,但不要注意这些, / 1 / 只是我的网站)此程序打印我this我以root身份运行wireshark。当我尝试捕获其他网站数据包(例如my friends website)时,它可以正常工作。我还有另外一个问题。是否他回复说,网络服务器只发送一个文本,如一个文本文件,以标题开头,然后是正文(html)?对不起,我的问题听起来很傻。感谢

1 个答案:

答案 0 :(得分:3)

你的问题不是愚蠢的。您只是在向localhost发送数据包时没有使用任何真正的网络。 Wirehark很可能无法在你的系统上捕获它们。 阅读:https://wiki.wireshark.org/CaptureSetup/Loopback

尝试将它们发送到外部IP或其他主机。

是的,对GET请求的回复只是标准格式的文本:http://www.tcpipguide.com/free/t_HTTPResponseMessageFormat.htm