当客户端应用程序连接到服务器时,boost.asio 不使用基本概念对我来说有点奇怪 - 使用 IP 地址和端口。可能是我在 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);
}
Windows 在其 WinSock 2.0 中使用两个参数——IP 和端口——来识别服务器。
所以,问题是 - Asio 究竟是如何找出服务器在哪个端口上监听连接的?它会扫描所有端口吗?而且,如果确实如此,如果两台服务器同时监听不同的端口会发生什么?