本文以一段示例代码,说明使用boost asio进行同步通讯的使用方法。
#include#include using namespace std;using boost::asio::ip::tcp; int main(){ boost::asio::io_service ioservice; // I/O事件模型封装,如win下的iocp,unix下的poll, linux下的epoll等 tcp::socket socket(ioservice); tcp::endpoint endpoint; // tcp端点,包含地址和端口 boost::system::error_code errcode; tcp::resolver resolver(ioservice); // 地址名称解析器 tcp::resolver::iterator iter_endpoint; // resolver一次可返回多个地址,使用迭代器逐个访问 tcp::resolver::query query("mail.163.com", "pop3"); // 主机地址查询条件类,第一个参数是主机名,后一个是所需连接的服务名。 // 指定服务名可以使返回的endpoint除了包含主机地址,还会设定该服务的默认端口(如pop3默认端口为110) // 如果只需要查询主机地址,则服务名可以为空字符串(返回的endpoint.port()==0) iter_endpoint = resolver.resolve(query, errcode); // 解析所需的服务地址 if ( errcode.value() != 0) { cout<<"error code: "< <<", "<<"error message: "< < endpoint(); cout< <<":"< < 0 ) { result[len] = '\0'; cout<<"received: "< < 0 ) { result[len] = '\0'; cout<<"received: "< < 0 ) { result[len] = '\0'; cout<<"received: "< < 0 ) { result[len] = '\0'; cout<<"received: "< < <<"connect error: "< <