基于Boost::asio库的网络编程实现基础

本文介绍了如何利用Boost::asio库构建一个网络打印服务器程序,详细讲解了从创建io_service对象到建立TCP连接、接收数据的步骤,包括acceptor、resolver、socket的使用,以及异步读写操作。
摘要由CSDN通过智能技术生成

最近正在开发一个网络打印服务器程序,使用Boost::asio库来实现服务端。下面详细介子绍asio库的使用方法,仅用来总结学习经验。如有不对的地方请大家指正.废话少说,直接进入主题。
对于一个网络程序的服务器端我们需要提供的是服务器的address,和服务开放的端口号port。

在asio库中首先我们必须使用一个io_service类来支持所有的IO功能。需要注意到是我们必须调用io_service_my.run()函数来开启IO服务的事件循环以使功能都能被正常使用。
 boost::asio::io_service io_service_my;
现在我们可以基于这个io_service_my来关联构建一下几个类:

1. boost::asio::ip::tcp::acceptor acceptor_my(io_service_my);
因为LPD的实现是基于TCP传输协议,所以也使用了TCP的acceptor来接收client发来的连接。

 

2.  boost::asio::ip::tcp::resolver resolver_my(io_service_my);
 boost::asio::ip::tcp::resolver::query query_my(address,port);
 boost::asio::ip::tcp::endpoint endpoint_my = *resolver.resolve(query_my);
这几个类主要是用来实现对地址的解析和绑定终端节点到相应的开放端口号上。首先构造一个关联到io_service_my的解析器resolver_my。然后让解析器resolver_my执行resolve

()函数来解析query_my指定的address和port到一个终端节点endpoint_my上。我们会看到这个endpoint_my终端节点会被绑定到这个acceptor_my接收器上。

 

3. boost::asio::ip::tcp::socket socke

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值