【发布时间】:2014-02-14 23:05:22
【问题描述】:
我正在使用 Boost Asio 进行跨平台网络。我尝试了各种连接方法,但在尝试连接到 Android 上的套接字时,我不断收到“找不到元素”asio.misc 错误。我很困惑,因为这发生在成功解析域名之后。例如,如果我为主机和端口 80 输入 google.com,那么解析器将打印出所有 20 多个谷歌服务器,但稍后它不会连接说 asio.misc “找不到元素”
这是我的代码:
boost::asio::io_service service;
boost::system::error_code ec;
boost::asio::ip::tcp::resolver resolver(service);
boost::asio::ip::tcp::resolver::query query(host, port);
boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query, ec);
boost::asio::ip::tcp::resolver::iterator iterEnd;
boost::asio::ip::tcp::endpoint ep;
int it = 0;
while(iter != iterEnd)
{
ep = *iter++;
debug+="\nLooking at resolve with address " + ep.address().to_string();
it++;
}
//Try to connect through asio
boost::asio::ip::tcp::socket sock( service );
//asio::connect does all the iterator work for us.
boost::asio::connect(sock, iter, ec);
if( ec )
{
return new string("Should be connected but I can't");
}
else
{
debug+= "\n " + ec.message() + "\n " + ec.category().name();
return debug;
}
【问题讨论】:
-
您是否拥有访问互联网所需的权限?
-
是的,我愿意。它将域名解析为正确的 IP 地址,所以我知道我设置了它。
-
你怎么打电话给
service? post() 或 bind().
标签: android c++ boost boost-asio