0
使用升压ASIO我编写简单的代码:我发送TCP请求的HTTP服务器 - 但没有任何回应
asio::io_service io_service;
asio::ip::tcp::socket s(io_service);
asio::ip::tcp::resolver resolver(io_service);
asio::connect(s, resolver.resolve({ "aire.pl", "80" }));
cout << "connected" << endl;
string request = "GET http://aire.pl/ HTTP/1.1";
size_t request_length = std::strlen(request.c_str());
asio::write(s, asio::buffer(request, request_length));
cout << "packet sent" << endl;
char reply[1024];
size_t reply_length = asio::read(s, asio::buffer(reply, request_length));
std::cout << "Reply is: ";
std::cout.write(reply, reply_length);
std::cout << "\n";
一切似乎都做工精细,因为使用TCP突降我可以看到我的包该方案已派出:
但我没有任何回应。一个有趣的事实是,如果HTTP服务器是nginx,它可以正常工作!在这个例子中,HTTP服务器是Apache2。怎么了?
您是否使用Wireshark或类似软件检查您是否得到回应? – CurlyCorvus
你最好发送一个HTTP请求,而不是TCP请求。你没有,完全。你需要'\ r \ n \ r \ n'结尾。 – EJP