asio库中提供了两种方式来建立异步连接:asio::async_connect和asio::connect。其中,asio::async_connect是异步非阻塞方式,而asio::connect是同步阻塞方式。
如果需要使用非阻塞方式建立连接,可以使用asio::async_connect函数,示例如下:
#include
#include
using namespace boost::asio;
void connect_handler(const boost::system::error_code& ec)
{
if (!ec)
{
std::cout << "连接成功!" << std::endl;
}
}
int main()
{
io_service ios;
ip::tcp::socket sock(ios);
// 异步连接
ip::tcp::resolver resolver(ios);
ip::tcp::endpoint endpoint(ip::address::from_string("127.0.0.1"), 80);
sock.async_connect(endpoint, connect_handler);
ios.run();
return 0;
}
而如果需要使用同步方式建立连接,可以使用asio::connect函数,示例如下:
#include
#include
using namespace boost::asio;
int main()
{
io_service ios;
ip::tcp::socket sock(ios);
// 同步连接
ip::tcp::resolver resolver(ios);
ip::tcp::resolver::query query("127.0.0.1", "80");
ip::tcp::resolver::iterator iter = resolver.resolve(query);
connect(sock, iter);
std::cout << "连接成功!" << std::endl;
return 0;
}