17. Boost-Asio-Tutorial---Client Teil 2

Sie haben den Unterschied zwischen Client und Server kennengelernt, wie Sie einen Hostnamen in eine IP-Adresse auflösen und wie Sie eine Verbindung zu einem bestimmten Endpunkt herstellen. Zuvor haben Sie gelernt, wie Sie Daten über eine bestehende TCP-Verbindung senden und empfangen. In diesem Kurs werden wir all dies zusammenfassen und eine sehr einfache Client-Anwendung schreiben.

Unsere Kundenanwendung führt Folgendes aus:

1. Holen Sie sich den Hostnamen aus den Befehlszeilenparametern;
2. Lösen Sie den angegebenen Hostnamen in eine IP-Adresse auf;
3. Stellen Sie eine Verbindung zum HTTP-Port (80) der aufgelösten IP-Adresse her;
4. Senden Sie eine HTTP-GET-Anfrage;
5. Empfangen Sie HTTP Antwort und Ausgabe an die Standardausgabe;
6. Alle Vorgänge werden asynchron ausgeführt.

Der Einfachheit halber habe ich auf die Fehlerbehandlung verzichtet. Hier ist der vollständige Beispielcode:

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

namespace io = boost::asio;
namespace ip = io::ip;
using tcp = ip::tcp;
using error_code = boost::system::error_code;
using namespace std::placeholders;

class application
{
public:

    application(io::io_context& io_context, std::string const& hostname)
    : resolver(io_context)
    , socket  (io_context)
    {
        request = "GET / HTTP/1.1\n"
                  "Host: " + hostname + "\n"
 

おすすめ

転載: blog.csdn.net/Knowledgebase/article/details/133012645