- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码如下所示:
//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/
我对 C++ 的经验很少,并且在使用 boost-asio 时遇到了一些问题。我想按照以下方式重写标准的 boost-asio async-http-client 示例(http://www.boos
我正在构造一个使用 boost::asio 的 Socket 类。首先,我创建了一个 connect 方法,该方法获取主机和端口并将其解析为 IP 地址。这很有效,所以我决定研究一下async_res
我想知道传递给上述方法的对象的生命周期是多少。 异步解析 ip::basic_resolver::async_resolve(const query & q, ResolveHandler handl
下面的代码旨在执行以下操作:我有一个包装 boost asio 的解析器对象。解析器对象包含 io 服务和一个 worker,因此 io 服务运行函数永远不会返回。只要解析器对象还活着,就可以发出异步
我编写了生成大量传出 TCP 连接的复杂 TCP/IP 客户端应用程序。我尝试使用 boost::asio 作为 C++ 中的可移植 TCP/IP 网络实现。 我发现了以下问题。看代码: int ma
我使用函数 async_resolve() using tcp = boost::asio::ip::tcp; namespace asio = boost::asio; template clas
我的代码如下所示: //unrelated code snipped resolver.reset(new tcp::resolver(iosvc)); tcp::resolver::query qu
我应该为每个事件查询配备一个解析器,还是可以针对不同的查询对象多次调用 async_resolve? 最佳答案 否 在先前的查询仍处于事件状态时使用解析器并调用 async_resolve 是不正确的
使用 yield_context 作为堆栈协程中 Asio 异步操作的处理程序非常棒!但是 ip::basic_resolver::async_resolve 的处理程序具有与简单地接收错误代码不同的
我有这个代码。如何将我的方法 resolve_handler 与预期的迭代器和错误参数绑定(bind)?分解连接逻辑是否正确? void FileClient::start() { try {
当我调用 boost::asio::ip::tcp::resolver::async_resolve 时,我的处理程序收到一个 ip::tcp::resolver::iterator 迭代一个或多个
我按照 Boost.Asio 教程实现了一个简单的 TCP 客户端,但我在第一步就被阻止了,boost::asio::ip::tcp::resolver::async_resolve不起作用,永远不会
基于 this例如,我的程序有这个同步初始化部分: io_service = new boost::asio::io_service; resolver = new boost::asio::ip
我是一名优秀的程序员,十分优秀!