nez*_*reh 6 c++ service boost boost-asio resolver
我正在尝试使用Boost Asio创建一个HTTP客户端.我从asio复制了同步客户端示例,编译然后运行.不幸的是,在我的日志中,它显示找不到服务.当我跟踪代码时,我发现它是从以下代码抛出的:
boost::asio::io_service io_service;
// Get a list of endpoints corresponding to the server name.
tcp::resolver resolver(io_service);
//->if i removed the http, it has no error
tcp::resolver::query query("host.com", "http");
//->This part throws the service not found
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
tcp::resolver::iterator end;
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么抛出未找到的服务或者如何解决这个问题?
这意味着操作系统不知道哪个端口号对应于名为"http"的TCP服务.
在类似unix的操作系统上,这意味着http 80/tcp
缺少该行/etc/services
,我可以通过注释该行来重现Linux上的错误.
如果操作系统无法配置为使用服务,则可以使用""
解析程序中的任何服务,并在为connect调用创建端点对象时明确指定端口号:
tcp::endpoint connectionEndpoint(endpoint_iterator->address(), 80);
boost::system::error_code ec;
socket.connect(connectionEndpoint, ec);
Run Code Online (Sandbox Code Playgroud)