我是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)?对不起,我的问题听起来很傻。感谢
答案 0 :(得分:3)
你的问题不是愚蠢的。您只是在向localhost发送数据包时没有使用任何真正的网络。 Wirehark很可能无法在你的系统上捕获它们。 阅读:https://wiki.wireshark.org/CaptureSetup/Loopback
尝试将它们发送到外部IP或其他主机。
是的,对GET请求的回复只是标准格式的文本:http://www.tcpipguide.com/free/t_HTTPResponseMessageFormat.htm