クライアントアプリがサーバーに接続するときに、IPアドレスとポートを使用するという基本的な概念をboost.asioが使用しないのは、私には少し奇妙です。私はBoostの初心者かもしれません-そして私はそれを受け入れます-とにかく私は理解していません.
したがって、クライアントをローカルホスト上のサーバーに接続するための次のようなコードがあります。
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);
}
WinSock 2.0 の Windows は、IP とポートの 2 つのパラメーターを使用してサーバーを識別します。
質問は、サーバーが接続をリッスンしているポートを Asio がどのように正確に検出するのかということです。すべてのポートをスキャンしますか? もしそうなら、2 つのサーバーが同時に異なるポートでリッスンするとどうなりますか?