boost::asio connect error
-
Hallo Leute,
ich stehe derzeit auf dem Schlauch und hoffe mir kann da jemand weiterhelfen.
Main:
try { boost::asio::io_service io_service; boost::asio::ip::tcp::resolver resolver(io_service); boost::asio::ip::tcp::resolver::query query("79.110.84.75", "4001"); boost::system::error_code ec; auto endpoint_iterator = resolver.resolve(query, ec); if(!ec) { NT::Client client(io_service, endpoint_iterator); } else { std::cout << "Resolve Error: " << ec.message() << std::endl; return 1; } io_service.run(); } catch(std::exception &e) { std::cout << e.what() << std::endl; }
NT::Client Konstruktor:
NT::Client::Client(boost::asio::io_service& io_service, const boost::asio::ip::tcp::resolver::iterator& endpoint_iterator) : _socket(io_service), _io_service(io_service) { Connect(endpoint_iterator); }
NT::Client Connect:
void NT::Client::Connect(const boost::asio::ip::tcp::resolver::iterator& endpoint_iterator) { boost::asio::async_connect(_socket, endpoint_iterator, [this](const boost::system::error_code& ec, const boost::asio::ip::tcp::resolver::iterator&) { if(!ec) { BeginReceive(); } else { std::cout << "Connect Error: " << message.value() << std::endl; _socket.close(); } } ); }
Allerdings failed Connect mit Fehler Code: 995
Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendun
gsanforderung abgebrochenAllerdings währe noch zu erwähnen, dass am Server die Verbindung ankommt.
Weshalb wird mir der Error geschmissen?Ich bedanke mich schonmal,
Mit freundlichen Grüßen
Myrtaos
-
Ahja...
Das soll natürlichstd::cout << "Connect Error: " << ec.message() << std::endl;
heißen.
-
Du zerstörst das Socket noch bevor du
run()
aufrufst.
-
Hm Tatsache, jetzt rufe ich run() vorher auf und es klappt.
Bei den Beispielen von boost::asio wird run() auch erst am Ende aufgerufen was bei mir zur Verwirrung gesorgt hat.
Ich bedanke mich bei dir.
-
Wobei, die Callback Funktion wird jetzt nicht mehr aufgerufen, wenn run() vorher gecalled wurde. :<