Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost ASIO:文档未完成_C++_Boost Asio - Fatal编程技术网

C++ Boost ASIO:文档未完成

C++ Boost ASIO:文档未完成,c++,boost-asio,C++,Boost Asio,我将以下模板代码用于Boost ASIO套接字侦听器: #include <iostream> #include <string> #include <boost/asio.hpp> using boost::asio::ip::tcp; int main() { try { boost::asio::io_service io_service; tcp::acceptor acceptor(io_service, tcp::en

我将以下模板代码用于Boost ASIO套接字侦听器:

#include <iostream>
#include <string>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

int main()
{
  try
  {
    boost::asio::io_service io_service;

    tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), 88));

    for (;;)
    {
      tcp::socket socket(io_service);
      acceptor.accept(socket);

      std::string message = "<!DOCTYPE html><html><body><h1>HELLO WORLD</h1></body></html>";

      boost::system::error_code ignored_error;
      boost::asio::write(socket, boost::asio::buffer(message), boost::asio::transfer_all(), ignored_error);
    }
  } catch (std::exception& e) { std::cerr << e.what() << std::endl; }

  return 0;
}
#包括
#包括
#包括
使用boost::asio::ip::tcp;
int main()
{
尝试
{
boost::asio::io_服务io_服务;
tcp::acceptor acceptor(io_服务,tcp::endpoint(tcp::v4(),88));
对于(;;)
{
tcp::套接字(io_服务);
接受(套接字);
std::string message=“HELLO WORLD”;
boost::system::error\u代码被忽略\u错误;
boost::asio::write(套接字,boost::asio::buffer(消息),boost::asio::transfer_all(),忽略_错误);
}
}catch(std::exception&e){std::cerr参见HTTP规范(RFC7230)第19页第3节

HTTP消息的格式为:

 HTTP-message   = start-line
                  *( header-field CRLF )
                  CRLF
                  [ message-body ]
进一步阅读将揭示起始行的限制和要求、标题的格式以及向接收者指示消息正文长度的要求(或在分块消息的情况下检测消息正文的方法)

上述代码的格式如下:

[ message-body ]

HTTP严格要求格式正确的标头。您所做的只是编写一个最小的HTML负载。由于没有HTTP(请注意区别-HTTP是传输,HTML是文档描述格式),因此需要严格遵守HTTP的软件(如node.js)拒绝流,因为它是无效的。谢谢。从我阅读的内容来看,HTTP对头没有任何要求。(换句话说,虽然它只是HTML负载,但我仍然不知道它如何不是完全有效的HTTP。)但无论如何,当我添加内容类型等时,它不会改变错误。@DavidBroderick:Richard是对的。您的数据是有效的HTTP正文(例如:HTML),但不是有效的HTTP响应(HTTP状态行、加标题、加正文等)。HTTP响应可能包含HTTP正文。可以在浏览器控制台中查看有效HTTP响应的示例(如果有),或在,或只是谷歌。例如,要回复HELLO,您可以发送类似
HTTP/1.1 200 OK\r\n内容长度:4\r\n\r\nHELLO
。谢谢,您是对的。我将标题格式化错误,因此排除了原因。谢谢您和Richard。就是这样,Richard。谢谢!