비동기 적으로은 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