C:发送 GET 请求但 wireshark 没有捕获任何东西
C: sending GET requests but wireshark doesnt catch anything
我是 C 的新手,也是 wireshark
。所以我正在尝试向本地主机发送 http GET 请求并同时发送 运行 wireshark
。但似乎我做错了什么,因为 wireshark 没有显示任何 headers。所以这是我的 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 I'm running wireshark as root. When I try to catch another websites packets (for example my friends website) 它工作正常。我还有另一个 question.Is 他的回应是网络服务器只给我发回一个文本,比如一个以 headers 开头然后是 body(html) 的文本文件?对不起,如果我的问题听起来很愚蠢。谢谢
你的问题不傻。在向本地主机发送数据包时,您只是没有使用任何 real 网络。 wireshark 很可能不会在您的系统上捕获它们。
读这个:https://wiki.wireshark.org/CaptureSetup/Loopback
尝试将它们发送到您的外部 IP 或其他主机。
是的,对 GET 请求的响应只是标准格式的文本:http://www.tcpipguide.com/free/t_HTTPResponseMessageFormat.htm
我是 C 的新手,也是 wireshark
。所以我正在尝试向本地主机发送 http GET 请求并同时发送 运行 wireshark
。但似乎我做错了什么,因为 wireshark 没有显示任何 headers。所以这是我的 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 I'm running wireshark as root. When I try to catch another websites packets (for example my friends website) 它工作正常。我还有另一个 question.Is 他的回应是网络服务器只给我发回一个文本,比如一个以 headers 开头然后是 body(html) 的文本文件?对不起,如果我的问题听起来很愚蠢。谢谢
你的问题不傻。在向本地主机发送数据包时,您只是没有使用任何 real 网络。 wireshark 很可能不会在您的系统上捕获它们。 读这个:https://wiki.wireshark.org/CaptureSetup/Loopback
尝试将它们发送到您的外部 IP 或其他主机。
是的,对 GET 请求的响应只是标准格式的文本:http://www.tcpipguide.com/free/t_HTTPResponseMessageFormat.htm