李sir_Blog

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

2011年5月4日

摘要: udp是一种无连接的协议,提供无连接不可靠的服务。 在ace中,通过ACE_SOCK_Dgram类提供udp通信服务,ACE_SOCK_Dgram和ACE_SOCK_Stream的API非常类似,一样提供了send,recv及close等常用操作,这里就不再累述了。 udp通信时无需像tcp那样建立连接和关闭连接,tcp编程时需要通过accept和connect来建立连接,而udp通信省略了这一步骤,相对来说编程更为简单。 由于udp通信时无建立连接,服务器端不能像Tcp通信那样在建立连接的时候就获得客户端的地址信息,故服务器端不能主动对客户端发送信息(不知道客户端的地址),只有等到收到客户端 阅读全文
posted @ 2011-05-04 13:44 李sir 阅读(759) 评论(0) 推荐(0)

摘要: 概述: 传输控制协议TCP(Transmission Control Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP协议的可靠性是指保证每个tcp报文能按照发送顺序到达客户端。 Tcp通信过程一般为如下步骤: 服务器绑定端口,等待客户端连接。 客户端通过服务器的ip和服务器绑定的端口连接服务器。 服务器和客户端通过网络建立一条数据通路,通过这条数据通路进行数据交互。 常用API: 1. ACE_INET_Addr类。 ACE"地址"类ACE_Addr的子类,表示TCP/IP和UDP/IP的地址。它通常包含机器的ip和端口信息,通过它 阅读全文
posted @ 2011-05-04 13:43 李sir 阅读(1138) 评论(0) 推荐(0)

摘要: ACE Lock类属 锁类属包含的类包装简单的锁定机制,比如互斥体、信号量、读/写互斥体和令牌等。这里我就以互斥体为例简单的介绍一下其使用方法,对其它的锁类进行一些简单的说明。 1.互斥体的使用。 互斥体用于保护共享的易变代码,也就是全局或静态数据。这样的数据必须通过互斥体进行保护,以防止它们在多个线程同时访问时损坏。 在ACE中可以通过ACE_Thread_Mutex实现线程的访问互斥,下面的例子演示ACE_Thread_Mutex类的使用。 #include "ace/Thread.h" #include "ace/Synch.h" #include 阅读全文
posted @ 2011-05-04 13:39 李sir 阅读(5438) 评论(0) 推荐(0)

摘要: 有过在不同的操作系统下用c++进行过多线程编程的朋友对那些线程处理的API可能深有体会,这些API提供了相同或是相似的功能,但是它们的API的差别却极为悬殊,十分令人头痛。 ACE_Thread提供了对不同OS的线程调用的简单包装,通过一个通用的接口进行处理线程创建、挂起、取消和删除等问题。 一. 线程入口函数 所有线程必须从一个指定的函数开始执行,该函数称为线程函数,它必须具有下列原型:void* worker(void *arg) {}该函数输入一个void *型的参数,可以在创建线程时传入。注意:所有的线程启动函数(方法)必须是静态的或全局的(就如同直接使用OS线程API时所要求的一样) 阅读全文
posted @ 2011-05-04 13:32 李sir 阅读(703) 评论(0) 推荐(0)

摘要: ACE自适配通信环境 (Adaptive Communication Environment)是面向对象的框架和工具包,它为通信软件实现了核心的并发和分布式模式。ACE包含的多种组件可以帮助通信软件的开发获得更好的灵活性、效率、可靠性和可移植性。ACE中的组件可用于以下几种目的: 并发和同步 进程间通信(IPC) 内存管理 定时器 信号 文件系统管理 线程管理 事件多路分离和处理器分派 连接建立和服务初始化 软件的静态和动态配置、重配置 分层协议构建和流式框架 分布式通信服务:名字、日志、时间同步、事件路由和网络锁定,等等。 ACE体系结构 如图1-1所示,ACE具有分层的体系结构。在ACE框 阅读全文
posted @ 2011-05-04 13:28 李sir 阅读(653) 评论(0) 推荐(0)

摘要: ACE的安装是一件比较麻烦的事情,这里简单的记录了我在VS2005下安装ACE的过程,希望能给大家一个参考。 安装环境: 操作系统:Windows XP 专业版 编译环境:VS2005中文版 ACE版本:ACE-5.5.1 安装过程: 下载安装包。 Ace的安装文件可以在http://download.dre.vanderbilt.edu/中下载到,由于我是在windows环境下安装并且不需要TAO等其它库,便下载了ACE-5.5.1.zip。 下载完成后将其解压。我的解压路径为D:\Develop\ACE_wrappers。 设置环境变量 在操作系统添加一个名为ACE_ROOT的用户环境变量 阅读全文
posted @ 2011-05-04 13:25 李sir 阅读(778) 评论(0) 推荐(0)

摘要: boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法: #include <string>#include <iostream>#include <boost/shared_ptr.hpp>class implementation{public:~implementation() { std::cout <<"destroying 阅读全文
posted @ 2011-05-04 13:21 李sir 阅读(826) 评论(0) 推荐(0)

摘要: 1. 序言现在学的东西很容易忘记,写这篇文章的目的是能让我在需要时快速找回当时的感觉. Let's BOOST THE WORLD . 2. 编译:VC2005注意在 属性->C/C++->预处理器->预处理定义 中加入 _CRT_SECURE_NO_DEPRECATE;来屏蔽不必要的警告 3. Asio 网络库Boost.Asio是利用当代C++的先进方法,跨平台,异步I/O模型的C++网络库. 3.1. 网络库:VC2005注意在 属性->C/C++->命令行 中加入 -DBOOST_REGEX_NO_LIB来防止自动连接. 3.2. 同步Timer本 阅读全文
posted @ 2011-05-04 10:07 李sir 阅读(2652) 评论(0) 推荐(0)

2011年5月3日

摘要: 1,字符串 到 数值类型的转换 2,数值 到 字符串的转换 3,异常处理情况 4,boost::lexical_cast 的原型: template<typename Target, typename Source> Target lexical_cast(Source arg); lexical_cast 是依赖于字符串流 std::stringstream 的,其原理也是相当的简单:把源类型 (Source) 读入到字符流中,再写到目标类型 (Target) 中。但这里同时也带来了一些限制: - 输入数据 (arg) 必须能够 “完整” 地转换,否则就会抛出 bad_lexic 阅读全文
posted @ 2011-05-03 10:30 李sir 阅读(4788) 评论(0) 推荐(0)

摘要: 2. 同步Timer本章介绍asio如何在定时器上进行阻塞等待(blocking wait). 实现,我们包含必要的头文件. 所有的asio类可以简单的通过include "asio.hpp"来调用.#include <iostream> #include <boost/asio.hpp> 此外,这个示例用到了timer,我们还要包含Boost.Date_Time的头文件来控制时间.#include <boost/date_time/posix_time/posix_time.hpp> 使用asio至少需要一个boost::asio::i 阅读全文
posted @ 2011-05-03 10:20 李sir 阅读(9830) 评论(0) 推荐(1)

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