李sir_Blog

博客园 首页 联系 订阅 管理
上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 71 下一页

2011年5月12日

摘要: char d1[128];size_t bytes_transferred = sock.receive(boost::asio::buffer(d1));buffer 大小是自动管理的同样std::vector<char> d2(128);bytes_transferred = sock.receive(boost::asio::buffer(d2));还可以基于boost::arrayboost::array<char, 128> d3;bytes_transferred = sock.receive(boost::asio::buffer(d3)); buffe 阅读全文
posted @ 2011-05-12 15:20 李sir 阅读(2998) 评论(0) 推荐(0)

摘要: 大家都希望可以像操作STL容器一样的去操作数组,C++可没有提供这个东西,有时候你会选择使用vector来替代,不过这毕竟不是个好的办法,毕竟vector模拟动态数组比较稳妥,而用它去替代一个普通的数组,开销毕竟太大了。而恰好,boost::array就为你提供了这个功能。boost::array的定义如下(简化):详情参见相关文件Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->template<class T, std::size_t 阅读全文
posted @ 2011-05-12 15:07 李sir 阅读(8752) 评论(0) 推荐(0)

2011年5月5日

摘要: 使用情景:当类对象被 shared_ptr 管理时,需要在类自己定义的函数里把当前类对象作为参数传给其他函数时,这时需要传递一个 shared_ptr ,否则就不能保持 shared_ptr 管理这个类对象的语义(因为有一个 raw pointer 指向这个类对象,而 shared_ptr 对类对象的这个引用没有计数,很有可能 shared_ptr 已经把类对象资源释放了,而那个调用函数还在使用类对象——显然,这肯定会产生错误)。很好奇这个模板类的实现。先看看怎么使用:对一个类 A ,当我们希望使用 shared_ptr 来管理其类对象时,而且需要在自己定义的函数里把类对象 shared_pt 阅读全文
posted @ 2011-05-05 10:58 李sir 阅读(8737) 评论(1) 推荐(2)

摘要: boost::format类提供了类似C语言里'printf'功能的格式化输出能力,当然功能更强大。所需头文件:#include <boost/format.hpp>示例代码:#include<iostream> #include<string> #include<boost/format.hpp> usingnamespacestd; int_tmain(intargc,_TCHAR*argv[]) { //使用%序号%的方式给出指示符,后面用%连接对应的数据。 cout<<boost::format("w 阅读全文
posted @ 2011-05-05 10:37 李sir 阅读(15989) 评论(0) 推荐(1)

摘要: 转自:http://blog.csdn.net/Solstice/archive/2008/10/13/3066268.aspx这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应用程序的编写方式。Scott Meyers的Effective C++ 3rd ed.第35条款提到了以boost::function和boost 阅读全文
posted @ 2011-05-05 10:10 李sir 阅读(815) 评论(0) 推荐(0)

摘要: 智慧 + 毅力 = 无所不能正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...boost::asio 的同、异步方式 转自:http://blog.csdn.net/zhuky/archive/2010/03/10/5364574.aspxBoost.Asio是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型。头文件#include <boost/asio.hpp>名空间using namespace boost::asio;ASIO库能够使用TCP、UDP、ICMP、串口来发送/接收数据,下面先介绍TCP协议的读写 阅读全文
posted @ 2011-05-05 09:37 李sir 阅读(1631) 评论(0) 推荐(0)

2011年5月4日

摘要: 以前使用ACE实现Server框架,但是觉得太笨重,决定采用boost.asio来写服务器程序: 1.服务器构建在linux上面;当然也可以在windows下运行 2.io部分采用非阻塞模式、业务逻辑部分采用同步线程池实现 3.封装io操作及状态,用户应用程序无需关心io详细操作所以决定采用boost::asio框架来写服务器:boost::asio::io_service提供了核心IO功能、和异步IO对象,它包括: boost::asio::ip::tcp::socket boost::asio::ip::tcp::acceptor boost::asio::ip::udp::socket 阅读全文
posted @ 2011-05-04 17:24 李sir 阅读(18300) 评论(0) 推荐(2)

摘要: 接受器-连接器设计模式(Acceptor-Connector)使分布式系统中的连接建立及服务初始化与一旦服务初始化后所执行的处理去耦合。 这样的去耦合通过三种组件来完成:acceptor、connector 和 servicehandler(服务处理器)。 连接器主动地建立到远地接受器组件的连接,并初始化服务处理器来处理在连接上交换的数据。 接受器被动地等待来自远地连接器的连接请求,在这样的请求到达时建立连接,并初始化服务处理器来处理在连接上交换的数据。 初始化的服务处理器执行应用特有的处理,并通过连接器和接受器组件建立的连接来进行通信。 结构 1. 服务处理器(Service Handler 阅读全文
posted @ 2011-05-04 13:55 李sir 阅读(752) 评论(0) 推荐(0)

摘要: 1.ACE反应器框架简介 反应器(Reactor):用于事件多路分离和分派的体系结构模式 通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞与非阻塞。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返回, 而不会等待。 在前面的章节中提到的Tcp通信的例子中,就是采用的阻塞式的工作方式:当接收tcp数据时,如果远端没有数据可以读,则会一直阻塞到读到需要的数据为止。这种方式的传输和传统的被动方法的调用类似,非常直观 阅读全文
posted @ 2011-05-04 13:54 李sir 阅读(1100) 评论(0) 推荐(0)

摘要: 主动对象模式用于降低方法执行和方法调用之间的耦合。该模式描述了另外一种更为透明的任务间通信方法。 传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的,当方法被调用时,调用线程将阻塞,直至调用结束。而主动对象却不一样。这些对象具有自己的命令执行线程,主动对象的方法将在自己的执行线程中执行,不会阻塞调用方法。 例如,设想对象"A"已在你的程序的main()函数中被实例化。当你的程序启动时,OS创建一个线程,以从main()函数开始执行。如果你调用对象A的任何方法,该线程将"流过"那个方法,并执行其中的代码。一旦执行完成,该线程 阅读全文
posted @ 2011-05-04 13:49 李sir 阅读(935) 评论(0) 推荐(0)

上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 71 下一页