私は非同期にをBoost.Asioを使用してftpホストを解決しようとしています。非同期で解決するためにBoost.Asio
#include <iostream>
#include <string>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
using boost::asio::ip::tcp;
class FtpSession {
public:
void Connect(std::string& host) {
boost::asio::io_service io_service;
tcp::resolver resolver(io_service);
tcp::resolver::query query(host, "ftp");
resolver.async_resolve(query,
boost::bind(&FtpSession::OnResolve, this,
boost::asio::placeholders::error,
boost::asio::placeholders::iterator));
}
private:
void OnResolve(const boost::system::error_code& err, tcp::resolver::iterator endpoint_iterator) {
if (!err)
{
std::cout << "resolved!";
}
else
{
std::cout << "error.";
}
}
};
int main() {
FtpSession session;
std::string host("ftp.remotesensing.org");
session.Connect(host);
return 0;
}
をしかし、何らかの理由で、私はそれを実行すると、それだけで何も印刷されません:で
[email protected]:~/Desktop$ g++ -o test -lboost_system test.cc
[email protected]:~/Desktop$ ./test
[email protected]:~/Desktop$
エラーや警告をここで
は、私がこれまで試したものですしかしコンパイル。どうすればこの問題を解決できますか?
ありがとうございます! 'io_service.run()'は現在のスレッドでこれを実行しますか?はいの場合、この非ブロック化を行う方法はありますか? –
はい、あなたは 'boost :: thread'を作成し、' io_service'インスタンスの 'run'に' bind'する必要があります。 – Nim