gpt4 book ai didi

c++ - 在 async_resolve 处理程序中出现 "Service not found"错误

转载 作者:行者123 更新时间:2023-11-30 04:40:25 25 4
gpt4 key购买 nike

我的代码如下所示:

//unrelated code snipped
resolver.reset(new tcp::resolver(iosvc));
tcp::resolver::query query(host, port);
resolver->async_resolve(query,
boost::bind(&TCPTransport::handle_resolve, this,
boost::asio::placeholders::error,
boost::asio::placeholders::iterator));

LOG4CXX_INFO(logger, "Attempting connection to at " << host << ":" << port);
//unrelated code snipped



void TCPTransport::handle_resolve(const boost::system::error_code& err,
tcp::resolver::iterator endpoint_iterator)
{
if (err)
{
LOG4CXX_ERROR(logger, "Error: " << err.message());
}
else
{
tcp::endpoint endpoint = *endpoint_iterator;
if (!socket)
{
socket.reset(new tcp::socket(iosvc));
}
socket->async_connect(endpoint,
boost::bind(&TCPTransport::handle_connect, this,
boost::asio::placeholders::error, ++endpoint_iterator));
}
}

当我运行这段代码时,我知道服务器的适当门和端口正在运行,我在我的日志文件中得到以下文本:错误:找不到服务

任何人都可以深入了解此错误的实际含义吗?

最佳答案

在 Boost 中,该错误似乎只能作为调用 getaddrinfo() 的结果发生。 In MSDN (对于它的值(value)),这听起来像是调用者(ASIO?)支持的套接字类型不支持服务名称(或端口)。

换句话说,似乎您正在尝试在非 TCP 套接字上建立 TCP 连接(不太可能,因为您正在使用 TCP 类进行 DNS 解析)或非 TCP 端口(不知道该怎么做)。

我建议使用调试器进入代码以查看出现了什么问题,不过如果您使用同步调用 resolve() 会容易得多。否则你将不得不在 ASIO 使用的各种内部处理程序上设置多个断点(不是那么糟糕,但仍然很麻烦)。希望对您有所帮助...

关于c++ - 在 async_resolve 处理程序中出现 "Service not found"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400787/

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