Mit Boost-Asio I einfachen Code vorbereitet:ich TCP Anforderung an HTTP-Server senden - aber sie haben keine Antwort
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";
Alles scheint gut zu funktionieren, weil tcp-dump kann ich meine Pakete sehen
Aber ich habe keine Antwort: dass das Programm gesendet. Die eine interessante Tatsache ist, dass, wenn der HTTP-Server nginx ist, es funktioniert! In diesem Beispiel ist der HTTP-Server Apache2. Was ist los mit dir?
Haben Sie mithilfe von Wireshark oder einer ähnlichen Software überprüft, ob Sie überhaupt eine Antwort erhalten? – CurlyCorvus
Sie senden besser eine HTTP-Anfrage, keine TCP-Anfrage. Du hast nicht, ganz. Sie brauchen '\ r \ n \ r \ n' am Ende davon. – EJP