0
Ich versuche zu überprüfen, ob boost::asio::async_connect
erfolgreich war, aber ich bekomme keinen Fehler, auch wenn der Server nicht gestartet ist. Wie überprüfe ich den Erfolg richtig? Vielen Dank!async_connect erfolgreich, wenn Server nicht läuft
main.cpp
#include <boost/asio.hpp>
#include "tcp_client.h"
typedef boost::asio::ip::tcp tcp;
int main(int argc, char* argv[])
{
char host[16] = "127.0.0.1";
boost::asio::io_service io_service;
TCP_Client client(host, io_service);
io_service.run();
return 0;
}
tcp_client.h
#pragma once
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <iostream>
typedef boost::asio::ip::tcp tcp;
class TCP_Client
{
public:
TCP_Client(std::string newHost, boost::asio::io_service& io_service);
private:
void handle_connect(const boost::system::error_code& error);
boost::asio::ip::tcp::socket socket;
boost::asio::ip::tcp::acceptor acceptor;
};
tcp_client.cpp
#include "tcp_client.h"
TCP_Client::TCP_Client(std::string host, boost::asio::io_service& io_service)
: socket(io_service), acceptor(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 12121))
{
tcp::resolver resolver(socket.get_io_service());
tcp::resolver::query query(host, "12121");
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
boost::asio::async_connect(socket, endpoint_iterator, boost::bind(&TCP_Client::handle_connect, this, boost::asio::placeholders::error));
}
void TCP_Client::handle_connect(const boost::system::error_code& error)
{
if (!error && socket.is_open())
{
std::cout << "Connected" << std::endl;
}
else
{
std::cout << "Error handle connect:" << error << std::endl;
}
int a;
std::cin >> a;
}
Was passiert? –
Es wird nur "Verbunden" ausgedruckt. – honiahaka10
Ihr Code sieht richtig aus. Sind Sie 100% sicher, dass es nicht verbunden ist? Was sagt "Netstat"? –