Frage

es ist ein bisschen zu mir seltsam, dass Boost.Asio doesn `t Grundkonzept verwenden, wenn Client-Anwendung auf den Server zu verbinden - mit Hilfe von IP-Adresse und Port. Ich bin ein wenig noobie in-Boost kann sein - und ich akzeptiere das. - aber trotzdem verstehe ich nicht
Also, ich habe Code wie dieser Client zu bekommen mit dem Server auf dem localhost:


        boost::asio::io_service io_service;
        tcp::resolver resolver(io_service);
        tcp::resolver::query query("localhost", "daytime"); 
        tcp::resolver::iterator endpoint_iterator = resolver.resolve(query); 
        tcp::resolver::iterator end;

        tcp::socket socket(io_service);
        boost::system::error_code error = boost::asio::error::host_not_found;
        while(error && endpoint_iterator != end) {
            socket.close();
            socket.connect(*endpoint_iterator++, error);
        }

Fenster in seiner WinSock 2.0 verwendet zwei Parameter - IP und Port - den Server zu identifizieren.
Also, die qurestion ist - wie genau Asio herausfindet, welcher Port lauscht Server-Verbindungen auf? Ist es alle Häfen durchsucht? Und wenn ja, was passiert, wenn zwei Server auf verschiedene Ports gleichzeitig hören?

War es hilfreich?

Lösung

Sie sagen, dass Sie von der Tageszeit-Dienst verwendet auf dem Port auf localhost verbinden möchten. (: \ WINDOWS \ system32 \ drivers \ etc \ services unter Windows, ich glaube, / etc / services unter Unix in der Regel C) Es wird die entsprechende Portnummer in der Datei services nachschlagen. Sie könnten auch dort eine explizite Portnummer verwenden.

Andere Tipps

Versuchen Sie,

tcp::resolver::query query("localhost", boost::lexical_cast<string>(port));//assuming port is an int

Um Ihre Frage zu beantworten, erinnern daran, dass Sie den Server auf Port starten 13. Dies geschieht, der Hafen zu sein, die den Linux-Tagesdienst läuft (http://www.sorgonet.com/linux/linuxdaemons/) . Daher sind sie anschließend in der Lage Abfrage zu verwenden ( „localhost“, „tagsüber“), anstatt den Port angeben.

open netcat hört auf Port 13 auf dem lokalen Host es wird die Verbindung der Demo akzeptieren. Geben Sie einige blabla, wenn es verbindet und Sie die Ausgabe auf dem Demo-Programm sehen die netcat laufen, laufen: nc -l 13 -p

Fenster? kein netcat? installieren Cygwin, und fügen Sie netcat

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top