#include "iostream"
#include "unistd.h"
#include "netinet/in.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "fcntl.h"
#include "tools.h"//мой файл. там strlen() и ip2int()
using namespace std;
int main(int argc, char** argv){
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
addr.sin_addr.s_addr = htonl(ip2int(192,168,0,1));
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
connect(sockfd,(struct sockaddr*) &addr, sizeof(addr);
char result[1024];
char request_buffer[] = "GET / HTTP/1.1\r\n\r\n";//Это исправлено
for(int i = 0; i < 20; i++){
write(sockfd,request_buffer,strlen(request_buffer));
}
read(sockfd, result, 1024);
cout << result << endl;
close(sockfd);
return 0;
}
如果您多次发送请求,正文就会出现。从第一次开始,只有空体的头球出现。
发送两个换行符:
"GET / HTTP/1.1\r\n\r\n"事实是,根据HTTP 1.1 规范,请求的结束是在空行之后的 \r\n,即 \r\n\r\n。这样做是为了能够发送请求标头。例如:
尝试远程登录到端口 80 - 它会变得非常清楚。
我不会为了一件事而拖累所有的加加重量
cout。