灿哥哥的博客

专注技术,热爱分享

排序:
默认
按更新时间
按访问量
RSS订阅

Boost.Asio C++ 网络编程之十一:deadline_timer使用说明

       deadline_timer和socket一样,都用io_service作为构造函数的参数。也即,在其上进行异步操作,都将导致和io_service所包含的iocp相关联。这同样意味着在析构 io_service之前,必须析构关联在这个io_service上的deadline_tim...

2018-03-01 16:52:49

阅读数 1020

评论数 0

Boost.Asio C++ 网络编程之十:基于TCP的异步服务端

       这个流程图是相当复杂的:从Boost.Asio出来你可以看到4个箭头指向on_accept,on_read,on_write和on_check_ping。这也就意味着你永远不知道哪个异步调用是下一个完成的调用,但是你可以确定的是它是这4个操作中的一个。基于TCP的异步服务端1.流程图...

2018-03-01 14:36:12

阅读数 1352

评论数 0

Boost.Asio C++ 网络编程之九:基于TCP的异步客户端

现在,是比较有趣(也比较难)的异步实现! 当查看流程图时,你需要知道Boost.Asio代表由Boost.Asio执行的一个异步调用。例如do_read(),Boost.Asio和on_read()代表了从do_read()到on_read()的逻辑流程,但是你永远不知道什么时候轮到on_read...

2018-03-01 14:19:32

阅读数 526

评论数 0

Boost.Asio C++ 网络编程之八:基于TCP的同步服务端

       同步服务端也是相当简单的。它只需要两个线程,一个负责监听新的客户端连接,另外一个负责处理已经存在的客户端请求。它不能使用单线程,因为等待新的客户端连接是一个阻塞操作(因为accept()是阻塞的),因此我们需要另外一个线程来处理已经存在的客户端请求。基于TCP的同步服务端1.流程图2...

2018-02-28 19:24:52

阅读数 168

评论数 0

Boost.Asio C++ 网络编程之七:基于TCP的同步客户端

      从本篇开始,我们会深入学习怎样使用Boost.Asio建立更加复杂的客户端和服务端应用。你可以运行并测试它们,而且在理解之后,你可以把它们做为框架来构造自己的应用。在接下来的例子中:1.客户端使用一个用户名(无密码)登录到服务端2.所有的连接由客户端建立,当客户端请求时服务端回应3.所...

2018-02-28 19:10:12

阅读数 272

评论数 0

Boost.Asio C++ 网络编程之六:UDP回显客户端/服务

       因为UDP不能保证所有消息都抵达接收者,所以不能保证消息都以回车结尾。       在服务端,收到消息后,简单的回发给客户端,并且不关闭socket,因为这是UDP。一.UDP同步客户端UDP客户端比TCP客户端要简单:#ifdef WIN32 #define _WIN32_WINN...

2018-02-28 14:37:06

阅读数 914

评论数 0

Boost.Asio C++ 网络编程之五:TCP回显客户端/服务端

回显就是服务端将接收到的任何内容回发给客户端显示,然后关闭客户端的连接。这个服务端可以处理任何数量的客户端。每个客户端连接之后发送一个消息,服务端接收到消息后把它发送回去。在那之后,服务端关闭连接。具体流程如下图所示。       对于TCP而言,我们需要一个额外的保证:每一个消息以换行符结束(‘...

2018-02-27 16:56:21

阅读数 2755

评论数 0

Boost.Asio C++ 网络编程之四:io_service类

你应该已经发现大部分使用Boost.Asio编写的代码都会使用几个io_service的实例。io_service是这个库里面最重要的类;它负责和操作系统打交道,等待所有异步操作的结束,然后为每一个异步操作调用其完成处理程序。        如果你选择用同步的方式来创建你的应用,你则不需要考虑我...

2018-02-01 20:35:58

阅读数 1712

评论数 0

Boost.Asio C++ 网络编程之三:计时器

一些I/O操作需要一个超时时间。它只能应用在异步操作上(同步意味着阻塞,因此没有超时时间)。例如,下一条信息必须在100毫秒内从你的同伴那传递给你。 bool read = false; void deadline_handler(const boost::system::error_code ...

2018-02-01 19:29:26

阅读数 259

评论数 0

Boost.Asio C++ 网络编程之二:同步和异步

       首先,异步编程和同步编程是截然不同的。在同步编程中,所有的操作都是顺序执行的,比如从socket中读取(请求),然后写入(回应)到socket中。每一个操作都是阻塞的。因为操作是阻塞的,所以为了不影响主程序,当在socket上读写时,通常会创建一个或多个线程来处理socket的输入/...

2018-02-01 18:40:17

阅读数 1093

评论数 0

Boost.Asio C++ 网络编程之一:什么是Boost.Asio?

       简单来说,Boost.Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库。       关于网络处理已经有很多解决方案,但是Boost.Asio是目前为止最优的方案。它在2005年就被包含进Boost,然后被大量Boost的用户测试并使用在许多项目中,比如:R...

2018-02-01 17:24:04

阅读数 716

评论数 0

提示
确定要删除当前文章?
取消 删除