流式套接字,提供同/異步發送接收數據,鏈接,綁定,設置套接字選項等功能
對於socket中的connect()
方法,它只針對某一個 endpoint 的鏈接linux
用於服務器端接受新鏈接的套接字,此類中的
accept()
方法調用後,將阻塞直到有客戶端鏈接或產生錯誤c++
void doit(socket_type s) { // ....... } namespace asio = boost::asio; typedef shared_ptr<asio::ip::tcp::socket> socket_type; asio::ip::tcp::endpoint server_endpoint(asio::ip::tcp::v4(), server_port); asio::ip::tcp::acceptor acceptor(io_context, server_endpoint); for ( ; ; ) { socket_type socket(new asio::ip::tcp::socket(io_context)); acceptor.accept(*socket); boost::thread(boost::bind(doit, socket)); }
提供了將查詢解析爲端點列表的能力, 調用類中的
resolve()
方法將獲得某個服務器全部可用的ip,並將結果以results_type類型返回。咱們能夠以resolve()
返回的結果集爲參數調用boost::asio::connect()
方法去鏈接服務器,boost::asio::connect()
方法將逐個嘗試鏈接知道成功鏈接或產生錯誤。服務器
namespace asio = boost::asio; asio::io_context io_context; asio::ip::tcp::socket s(io_context); asio::ip::tcp::resolver resolver(io_context); asio::ip::tcp::resolver::results_type peer_endpoints = resolver.resolve("www.baidu.com", "http"); asio::connect(s, peer_endpoints); // 和linux中的getaddrinfo函數相同