大坡3D软件开发

自主操作系统和CPU--用软件来改变世界

使用boost库的序列化serialization实现数据保存和恢复

在实际应用里经常要保存一些状态,比如下载文件时,要下载一个1000多个文件的任务,但程序有可能需要关闭,那么关闭之后程序怎么样知道已经下载了多个文件呢?这时就可以使用序列化来保存状态,以便程序重启动时加载状态回来,如下面的例子:// TestBin.cpp: 定义控制台应用程序的入口点。 // ...

2018-01-15 16:22:09

阅读数 578

评论数 0

boost库做什么用呢?

1、C++标准库不是已经很全面了吗?Boost又不是界面库,它主要解决些什么问题呢?哪类问题?2、Boost的开发人员都是C++标准委员会的吧,为什么没把它列做标准库,有什么不完善的问题吗?3、Boost应用前景如何,现在开发用的多吗?Boost库是为C++语言标准库提供扩展的一些C++程序库的总...

2017-06-12 16:18:50

阅读数 5253

评论数 1

在XP系统上出现无法定位程序输入点 K32GetProcessMemoryInfo

在XP系统上出现无法定位程序输入点 K32GetProcessMemoryInfoVC2012升级补丁5.0之后,编译出来的程序发现在XP系统无法定位程序输入点 K32GetProcessMemoryInfo于动态链接库kernel32.dll之上。之前程序一直在XP上安装正常,今天测试组的同事突...

2015-09-23 10:11:55

阅读数 11316

评论数 0

Installshield limited edition for VS2012安装,不能注册问题

Installshield limited edition for VS2012安装,不能注册问题上周有个同事电脑坏了,需要重新安装一台电脑,因为一些旧的工程需要使用Installshield来打包,就安排这个同事去网上下载一个版本,并安装,结果还需要注册码。那就在Installshield网站上...

2015-08-14 15:32:43

阅读数 8897

评论数 0

boost 1.57在VC2012里编译出错以及解决

最新发布的boost版本是在2014年11月3日发布,由于项目里使用,就立即更新为最新版本的库,这样也可以让可能出现的BUG减到最少。不过在更新这库之后,发现原来可以编译通过的项目,而现在不能通过了,提示错误如下:transform_width.hpp(156): error C2589: '('...

2014-11-17 12:36:54

阅读数 3554

评论数 0

在安装VC2012上再安装VC2010时连接出错解决

提示如下出错:LINK : fatal error LNK1123: failure during conversion to COFF: file invalid解决 方法:Go to C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\...

2013-11-29 09:21:17

阅读数 4234

评论数 2

boost库在工作(40)串行通讯

现代的计算机技术进步很快,各种的通讯也日新月异,像USB、网络、蓝牙、WIFI等通讯技术飞速地出现,改变了整个计算机的通讯能力,速度已经达到GBit级别。但是有一种最原始的通讯方式,还是保留了30年,它就是串行接口通讯。前一些年,有很多计算机已经准备把这个接口去掉,全部换USB了,近年来又看到串口...

2013-09-15 11:29:46

阅读数 3527

评论数 0

boost库在工作(39)网络UDP异步服务端之九

前面创建的UDP服务器和客户端,都是同步的方式,也就是说当接收数据时,不能参与别的事情执行的。如果在一个只有界面线程的程序里,又不想创建多线程,导致复杂程度的增加,在这种情况之下,我们还有一个方案可以选择,就是创建一个异步的UDP服务器或客户端,这样既有单线程的简单性,也可以让客户随便操作界面的快...

2013-09-01 09:25:55

阅读数 7179

评论数 0

boost库在工作(38)网络UDP客户端之八

前面创建了一个UDP服务器,主要是提供时间查询,因为它是一个服务器,所以没有能力连接服务器的,因此需要创建一个客户端来,后面主要就是做这件事情。在说明怎么样编写UDP客户端之前,在这里回复一个网友的问题,他说TCP基本上已经可以无错地做任何事情,包括我前面说的视频通讯,因而使用UDP是不必要学习的...

2013-08-24 19:31:12

阅读数 4276

评论数 0

boost库在工作(37)网络UDP服务端之七

前面介绍的都是网络TCP的服务器和客户端,其实还有UDP的服务器和客户端,同时也有同步和异步之分。UDP与TCP最大的区别,就是TCP是基于连接的,而UDP是无连接的。这里所谓的连接是指对方中断服务时,另外一方是可以感知的,而UDP是无法感知对方是否中断服务。还有另外一点,TCP发送的数据包是有流...

2013-08-11 20:43:51

阅读数 4556

评论数 0

boost库在工作(36)网络服务端之六

在上面介绍了管理所有连接的类,这个类主要就是添加新的连接,或者删除不需要的连接。但是管理的类CAllConnect是没有办法知道什么时候添加,什么时候删除的,它需要从接收到连接类里获取得到新的连接,从连接类里获得删除的事件。如下面的代码://封装一个服务端类来处理网络。 //软件开发人员: 蔡军生...

2013-08-04 16:37:59

阅读数 3474

评论数 0

boost库在工作(35)网络服务端之五

在前面的例子里,只是处理每个连接发来的消息,然后再把消息转回自己的那里,跟别的连接没有什么关联,这种情况只会适应一种像HTTP的那样,只关心自己的东西。但在网络服务器里,最多的是跟别人有关联的服务。比如说聊天室,就是不断地把所有进入这个聊天室的人的消息向所有人广播出去,也就是每个进来的连接,把连接...

2013-07-28 21:07:33

阅读数 2733

评论数 0

boost库在工作(34)网络服务端之四

现在来仔细地分析类CConnect,它主要作用就是管理一个连接的事务,比如数据接收和发送。因此类CConnect一定要有一个网络socket成员,它就是使用boost::asio::ip::tcp::socket类,这个类主要实现异步或同步的方式接收数据网络数据。在这个例子里,调用boost::a...

2013-07-20 19:54:41

阅读数 3634

评论数 0

boost库在工作(33)网络服务端之三

在这个例子里,表示服务器与一个客户端的沟通渠道,就是一个连接,封装为类CConnect。它是当服务器接收到一个客户端连接请求之后创建的,主要用来就是管理这个连接的生命周期,以及数据的接收和发送。从生命周期上来说,当一个连接创建时就旦生了,那什么时候死亡呢?在这个类的设计上是非常优秀,非常巧妙的,因...

2013-07-14 13:06:23

阅读数 3155

评论数 0

boost库在工作(32)网络服务端之二

在这个例子里,服务器对象主要使用boost::asio::io_service对象,这个对象主要用来构造异步接收数据使用,接着定义boost::asio::ip::tcp::acceptor对象,这个对象主要用来接收所有连接进来到服务器的连接,也就是起到监听的作用。在服务器类的构造函数里主要调用接...

2013-07-07 23:01:26

阅读数 3281

评论数 0

boost库在工作(31)网络服务端之一

上面已经介绍了客户端,接着下来就要开发服务端的程序了,因为只有客户端没有服务端是成不了事的,提供不了网络服务的。像C++这种语言,越来越多的应用都是在网络服务器领域,比如像HTTP服务器、EMAIL服务器、即时通讯服务器和游戏服务器等等。由于服务器的硬件资源都是比较昂贵,要提高处理大量服务的数据量...

2013-06-30 20:41:58

阅读数 4435

评论数 0

boost库在工作(30)网络客户端之五

在前面已经学习到客户端同步连接服务器的处理过程,由于同步的关系,前面的代码理解起来是比较简单,也容易接受,但它有一个致命的缺陷,就是在连接过程、在等服务器回应数据时,CPU不能做别的事情,只能在那里等待。这种等待对于有界面的软件来说,是一种不能接受的表现方式。比如当用户点击连接服务器之后,就一直等...

2013-06-16 22:29:55

阅读数 4461

评论数 0

boost库在工作(29)网络客户端之四

当客户端连接到服务器之后,想要做什么事情呢?其实就跟一个人去看医生一样,先去挂一个号,然后再根据排队的号去看医生,然后再根据医生的处方进行治疗。因此,在客户端和服务器设计上,一般有一条重要的原则,就是作为客户端要主动发起数据给服务器,让服务器知道客户端是来做什么事情的。比如同一个服务器的端口上,可...

2013-06-11 17:58:51

阅读数 3084

评论数 0

boost库在工作(28)网络客户端之三

从前面的例子可以知道,一个服务可能有多条路径达到,但在网络里只能一个端点对应一个端点的通讯,多个端点只是有备无患的作用,起不到别的作用。近来,发现有一个客户的问题比较奇怪,就是这个客户的网络是有备用网络配置,当安装我公司的路由器时,就会发生很多奇怪的问题,导致网络堵塞。后来深入跟踪,并且不地抓包分...

2013-06-10 22:10:11

阅读数 3030

评论数 2

boost库在工作(27)网络客户端之二

由于一台服务器上可能存在多个服务,而每个服务使用了不同的端口,因而对一台服务器的查询,就可能返回多个服务的端口。为了表示多个服务,需要使用一个列表来表达多个服务存在。而访问一个列表,通常使用迭代设计模式来访问整个列表。因此就会使用下面的代码来进行域名解释:// boost_020.cpp : De...

2013-06-02 19:55:56

阅读数 3314

评论数 2

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