在使用Asio库的独立的async_connect函数时,如果连接成功后没有调用回调函数,可能是因为没有正确处理连接事件。以下是一个示例代码,展示了如何正确使用独立的async_connect函数并调用回调函数:
#include
#include
void handleConnect(const boost::system::error_code& error) {
if (!error) {
std::cout << "Connected successfully!" << std::endl;
} else {
std::cout << "Connect failed: " << error.message() << std::endl;
}
}
int main() {
boost::asio::io_context ioContext;
boost::asio::ip::tcp::socket socket(ioContext);
// 建立连接的目标地址和端口号
boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::make_address("127.0.0.1"), 1234);
socket.async_connect(endpoint, handleConnect);
ioContext.run();
return 0;
}
在上面的示例代码中,我们首先创建了一个io_context对象和一个tcp::socket对象。然后,我们定义了一个名为handleConnect的回调函数,用于处理连接事件。
在main函数中,我们定义了一个tcp::endpoint对象,表示连接的目标地址和端口号。然后,我们使用async_connect函数发起异步连接,并指定handleConnect函数作为连接成功或失败时的回调函数。
最后,我们调用ioContext.run()来启动io_context对象的事件循环,等待回调函数的执行。当连接成功或失败时,handleConnect函数将被调用,并输出相应的信息。
请确保在运行该示例代码之前,目标地址和端口号是正确的,并且有一个可以接受连接的服务器在运行。