RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 870240
Accepted
Belenot
Belenot
Asked:2020-08-18 18:38:48 +0000 UTC2020-08-18 18:38:48 +0000 UTC 2020-08-18 18:38:48 +0000 UTC

http响应中的正文仅在大量请求之后出现

  • 772
#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;
}

如果您多次发送请求,正文就会出现。从第一次开始,只有空体的头球出现。

c++
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    user_587
    2020-08-18T18:44:44Z2020-08-18T18:44:44Z

    发送两个换行符: "GET / HTTP/1.1\r\n\r\n"

    事实是,根据HTTP 1.1 规范,请求的结束是在空行之后的 \r\n,即 \r\n\r\n。这样做是为了能够发送请求标头。例如:

    (request)
        GET / HTTP/1.1
        Host: example.com
    
    (response)
        HTTP/1.1 200 OK
        Server: server version
        Date: date
        ...
        
        <HTML>
        ...
    

    尝试远程登录到端口 80 - 它会变得非常清楚。

    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <arpa/inet.h>
    
    int main(int argc, char** argv){
      struct sockaddr_in addr;
      int status;
    
      status = 0;
      addr.sin_family = AF_INET;
      addr.sin_port = htons(80);
      addr.sin_addr.s_addr = inet_addr ("127.0.0.1");
      int sockfd = socket(AF_INET, SOCK_STREAM, 0);
      connect(sockfd, (struct sockaddr*) &addr, sizeof(addr));
      char result[1025];
      char request_buffer[] = "GET / HTTP/1.1\r\nHost: localhost\r\n\r\n";
      write(sockfd,request_buffer,strlen(request_buffer));
      while (status = read (sockfd, result, 1024)) {
          printf ("=============== READ STATUS %d =============\n", status);
          printf ("%s\n", result);
          memset (&result, 0, sizeof (result));
      }
      close(sockfd);
      return 0;
    }
    

    我不会为了一件事而拖累所有的加加重量cout。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5