boost.asio

本文深入探讨Boost.Asio库,重点介绍如何使用它进行UDP和TCP通信,包括同步与异步模式。同时,还阐述了如何利用Boost.Asio进行域名解析,以实现网络连接。
摘要由CSDN通过智能技术生成

boost.asio


asio: 异步输入/输出。
asio提供了可移植的同步或异步的I/O操作,它提供了一个现代C++风格的网络编程接口,支持TCP,UDP,ICMP等网络通信协议。

同步模式:程序发起一个I/O操作,向io_context提交请求,io_context将操作交给操作系统,同步等待。当I/O操作完成之后,操作系统会通知io_context,然后io_context再将结果发回给程序。

异步模式: 程序发起提供I/O操作,并提供一个回调函数,io_context把操作交给操作系统后,立即返回,不同步等待。调用io_context的**run()**函数可以等待异步操作完成,当异步操作完成时,io_context从操作系统获取结果,再调用回调函数。

UDP:

建立通信的步骤:

  1. 创建io_context对象。asio的任何操作都需要io_context的参与。 boost::asio::io_context io;
  2. 创建socket,socket对象需要用io_context初始化。boost::asio::ip::udp::socket sock(io);
  3. 创建端点(ip地址,端口),对于服务端,这是创建自身开放的端点。对于服务端就是需要到的服务端的端点。boost::asio::ip::udp::endpoint server_point(boost::asio::ip::address::from_string("127.0.0.1"), 8989);
  4. 套接字打开打开端口。sock.open(server_point.protocol());
  5. 对于服务端还需要这一步。绑定端点。sock.bind(server_point);
  6. 对于客户端可以有这一步。与服务端建立连接。connect(server_point);一般情况,udp通信的步骤是,建立连接,发送/接收数据,断开连接,... ,建立连接, 发送/接收数据, 断开连接,...,通过connect,第一,我们可以选择与哪个服务端建立连接,第二,与服务端建立一个较长期的连接。建立连接,发送/接收数据,... ,发送/接收数据, 断开连接。效率会更高。
  7. 对于异步操作,一定要调用run()函数,执行事件循环.

通过以上几步就能建立一个UDP连接,然后通过同步发送、接收,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值