gpt4 book ai didi

c++ - Boost Asio tcp::resolver: 找不到服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:34 24 4
gpt4 key购买 nike

我正在尝试使用 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;

任何人都可以解释为什么它抛出找不到服务或我该如何解决这个问题?

最佳答案

这意味着操作系统不知道名称为“http”的 TCP 服务对应于哪个端口号。

在类 unix 操作系统上,这意味着 /etc/services 中缺少行 http 80/tcp,我能够在 Linux 上重现该错误通过注释该行。

如果操作系统无法配置为使用服务,您可以在解析器中使用任何服务 "",并在为连接调用创建端点对象时明确指定端口号:

tcp::endpoint connectionEndpoint(endpoint_iterator->address(), 80);
boost::system::error_code ec;
socket.connect(connectionEndpoint, ec);

关于c++ - Boost Asio tcp::resolver: 找不到服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6647862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com