摘要:http://download.csdn.net/download/great3779/3998262
阅读全文
06 2014 档案
摘要:#include #include #include #include class semaphore{unsigned int count_;boost::mutex mutex_;boost::condition_variable condition_;public:explicit sema...
阅读全文
摘要:1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)...
阅读全文
摘要:方法一:此外,众所周知,Eclipse是Java程序,因此很容易就实现了跨平台,也是众所周知,Java的大型程序非常吃内存,即使有512MB内存, 仍然感觉Eclipse的启动速度很慢。个人认为1GB内存是你工作效率的保证。其余的东西,需待我深入学习以后再进一步分析。据网友的经验,先安装Eclips...
阅读全文
摘要:目前,Linux在国内受到了越来越多的业内人士和用户的青睐。相信在不久的将来,在国内为Linux开发的应用软件将会有很大的增加(这不,金山正在招兵买马移植WPS呢)。由于未来将会是Windows和Linux两强鼎立的格局,怎样能够使得开发的软件保持最大的可移植性就成了一个很重要的问题。小弟经过一段时...
阅读全文
摘要:最近一直在学习makefile是如何编写的。当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷。linux有一个自带的make命令,它让你的工作省去了很大的力气,但是你要学习如何编写makefile文件。makefile是一种特殊的文件格式...
阅读全文
摘要:先看两篇博文,作为基础知识。如果对C/C++编译链接过程都了解的话,可以跳过不看。http://www.firedragonpzy.com.cn/index.php/archives/2556http://www.cppblog.com/shifan3/archive/2007/01/05/1732...
阅读全文
摘要:Fedora 17 下安装codeblocks: 1.直接从yum源安装: sudo yum install codeblocks 2.源码安装 下载codeblocks 源程序包 http://www.codeblocks.org/ tar jxf codeblocks-*-src.ta...
阅读全文
摘要:首先,安装codeblocks:yum install codeblocks* -y然后安装gcc,gdb,g++:yum install gcc gdb gcc-c++ -y然后安装gtk的一些必要组件:yum install gtk2 gtk2-devel gtk2-devel-docs -y启...
阅读全文
摘要:我一直都没有写博客的习惯,最近正好在研究linux下的开发(目前也只是粗粗的研究),且用到了boost库,就乘此机会写点什么,最起码记录一下我在安装boost的一些步骤,主要给和我一样的linux开发新手们提供点借鉴(当然如果看到这篇文档的话 ),作者(jwybobo2007)。 1.下载boost...
阅读全文
摘要:为避免以下某个软件安装时不自动安装 build-essential 不妨先执行:sudo apt-get install build-essential[编辑]anjutaAnjuta DevStudio 的官方地址:http://anjuta.sourceforge.net/Anjuta是一个C/...
阅读全文
摘要:工欲善其事,必先利其器。用了这么久的linux,现在比较主流的几个C/C++的IDE基本已都用过了,现在来对他们做一下简单的比较。1、VIM首先要说的是VIM。我认为,VIM只是一个编辑器,不能算是IDE。虽说VIM有很多插件,例如代码折叠、递进等,可以将VIM组建成几乎类似一个IDE,但始终它不是...
阅读全文
摘要:摘要: 一、AnjutaAnjuta是一个多语言的IDE,它最大的特色是灵活,同时打开多个文件,内嵌代码级的调试器(调用gdb),应用程序向导(Application wizards)可以方便的帮助你创建GNOME程序而不需要你自己写一些与你兴趣无关的 ...一、AnjutaAnjuta是一个多语言...
阅读全文
摘要:1 Eclipse的安装到http://java.sun.com/j2se/1.5.0/download.jsp下载JRE安装;到http://eclipse.org下载Eclipse安装。(这儿可以下载Java版本的,也可以下载C/C++ 版本的)2 对于下载的Java版本或着只下载Eclipse...
阅读全文
摘要:yuminstalleclipseyuminstalleclipse-cdt
阅读全文
摘要:相信每个学习Linux的人都知道Makefile,这是一个很有用的东西,但是编写它是比较复杂,今天介绍一个它的自动生成工具,autotools的使用。很多GNULinux的的软件都是用它生成Makefile的,包括我们非常熟悉的Linux内核源代码。1、准备: 需要工具 autoscan acloc...
阅读全文
摘要:Linux中也有类似windows中DLL的变成方法,只不过名称不同而已。在Linux中,动态链接叫做Standard Object,生成的动态链接文件为*.so。详细请参考相关文档。开发环境:Eclipse 3.4.2G++:4.3.21. 创建动态链接库(1)在Eclipse中创建新的C++工程...
阅读全文
摘要:本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法。主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Configure.in 的方法及其规则。2评论:杨 小华, Linux 内核开发工程师, 自由撰稿人20...
阅读全文
摘要:原文出处:http://blog.ehomy.net/archives/148工作平台:Fedora 12获取boost库Linux下官方提供了两个压缩版本:boost_1_43_0.tar.bz2boost_1_43_0.tar.gz找到其中一个Unix/Linux包的直接下载地址,然后输入下列命...
阅读全文
摘要:一、GCC(GNU Compiler Collection)是linux下最主要的编译工具,GCC不仅功能非常强大,结构也异常灵活。它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada g++是GCC中的一个工具,专门来编译C++语言的。 GCC...
阅读全文
摘要:先来谈谈为什么会出现select函数,也就是select是解决什么问题的?平常使用的recv函数时阻塞的,也就是如果没有数据可读,recv就会一直阻塞在那里,这是如果有另外一个连接过来,就得一直等待,这样实时性就不是太好。这个问题的几个解决方法:1. 使用ioctlsocket函数,将recv函数设...
阅读全文
摘要:关于socket的阻塞与非阻塞模式以及它们之间的优缺点,这已经没什么可言的;我打个很简单的比方,如果你调用socket send函数时;如果是阻塞模式下:send先比较待发送数据的长度len和套接字s的发送缓冲的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len...
阅读全文
摘要:设置connect超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(《Windows...
阅读全文
摘要:linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别 UDP的socket在某些情况:如对方关闭时,本地可能sendto不出去数据,然后recvfrom就会被阻塞,这时就需要设置 这两个参数的值提高程序质量。linux: struct...
阅读全文
摘要:主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码:[cpp]view plaincopyprint?#include#include#include#include#include#include#ifdef_WIN32///包含winsocket...
阅读全文
摘要:1.TCP保活的必要性1)很多防火墙等对于空闲socket自动关闭2)对于非正常断开,服务器并不能检测到.为了回收资源,必须提供一种检测机制.2.导致TCP断连的因素如果网络正常,socket也通过close操作来进行优雅的关闭,那么一切完美.可是有很多情况,比如网线故障,客户端一侧突然断电或者崩溃...
阅读全文
摘要:#include #include #include #include #include #include #include #define BUFFER 800#define SERV_PORT 3333int main(){ int sockfd,n; socklen_t len; ...
阅读全文
摘要:一.Select 函数详细介绍 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时...
阅读全文
摘要:// all.h// 2005/06/20,a.m. wenxy#ifndef _ALL_H#define _ALL_H#include #include #include #include #include #include #include #include #include // ------...
阅读全文
摘要:1。通过已经连接的socket文件获取:[cpp]view plaincopyintgetpeermac(intsockfd,char*buf){intret=0;structarpreqarpreq;structsockaddr_indstadd_in;socklen_tlen=sizeof(st...
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int getPeerMacb...
阅读全文
摘要:构造函数构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp。Dispatch和post的区别Post一定是PostQueuedCompletionStatus并且在GetQueuedCompletionStatus 之后执行。Dispatch会首先检查当前t...
阅读全文
摘要:在实际产品运行中,对连接管理有了更新的认识,这里分享一下。shared_ptr管理连接对象的生命周期shared_ptr的引用计数器决定了连接对象的生命周期。这里我说的连接对象就是在我的前文:http://blog.csdn.net/csfreebird/article/details/852262...
阅读全文
摘要:只有看boost源码才能弄明白发生了什么。首先我是将vector里面写入了数据,然后用boost::asio::buffer将vector构造成了mutable_buffer_1对象。参考该文档的重载形式:http://www.boost.org/doc/libs/1_53_0/doc/html/b...
阅读全文
摘要:你要是看过basic_stream_socket的文档,里面提到async_write_some不能保证将所有要发送的数据都发出去。并且提到如果想这样做,需要使用boost asio的async_writehttp://www.boost.org/doc/libs/1_53_0/doc/html/b...
阅读全文
摘要:http://blog.csdn.net/caimouse/article/category/1339053
阅读全文
摘要:在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:l 并发l 异步l 缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。1任务队列1.1 以生产者-消费者模型设计任务队列 生产者-消费者模型是人们非常熟悉的模型,比如在...
阅读全文
摘要:io_service的作用io_servie实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的...
阅读全文
摘要:boost::asio 在创建io_service时,可以指定线程数,如果没有指定,默认是一个线程,也就是io_service run的那个线程,如果没有任务运行,该线程会退出。 如果在创建的时候指定了线程数,那么io_service在执行的时候线程数就可以并发执行,如果你run的线程还是只有1...
阅读全文
摘要:Boost.Thread可以使用多线程执行可移植C++代码中的共享数据。它提供了一些类和函数来管理线程本身,还有其它一些为了实现在线程之间同步数据或者提供针对特定单个线程的数据拷贝。头文件:#include 线程定义boost::thread 类是负责启动和管理线程。每个boost::thread对...
阅读全文
摘要:前言标准C++线程即将到来。预言它将衍生自Boost线程库,现在让我们探索一下Boost线程库。几年前,用多线程执行程序还是一件非比寻常的事。然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序;GUI应用程序将那些费时,复杂...
阅读全文
摘要:阅读对象本文假设读者有几下Skills[1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念。[2]熟悉C++开发,在开发工具中,能够编译、设置boost::thread库。环境[1]Visual Studio 2005/2008 with SP1[2]boost1.39/1.40...
阅读全文
摘要:本来想自己写一篇关于boost thread的文章来着,从网上一搜,觉得这篇文章入门最合适了。转自:http://www.cppblog.com/janvy/archive/2010/03/25/110498.aspx最近在做一个消息中间件里面涉及到多线程编程,由于跨平台的原因我采用了boost线程...
阅读全文
摘要:from:http://www.cppblog.com/shanoa/archive/2009/06/26/88606.aspx花了足足3天时间,外加1天心情休整,终于在第5天编写出了一个能运行的基于asio和thread_group的框架,差点没气晕过去,把源码都看懂了才感觉会用了。测试了一下,d...
阅读全文
摘要:错误码很重要,可以由此判断网络连接到底发生了神马事情,从而驱动高层逻辑的行为。只有笼统的错误码判断的网络层是不够规范的,鄙人觉得有些错误码还是需要在网络层就区分开的,特此记录一些当前实验的错误码以及发生原因。以下是一部分在async_receive()的handler处捕获到的比较有用的错误码错误码...
阅读全文
摘要:我们的程序中经常会用到线程来执行某些异步操作,而有些时候我们的线程执行的函数是这个样子的:[cpp]view plaincopyprint?voidThreadBody(){while(true){std::cout#include/**注意,windows操作系统下若要编译此程序需要建立的是WIN...
阅读全文
摘要:多线程编程中还有一个重要的概念:ThreadLocalStore(TLS,线程局部存储),在boost中,TLS也被称作TSS,ThreadSpecificStorage。boost::thread库为我们提供了一个接口简单的TLS的面向对象的封装,以下是tss类的接口定义:classtss{pub...
阅读全文
摘要:barrierbarrier类的接口定义如下:1classbarrier:privateboost::noncopyable//Expositiononly2{3public:4//construct/copy/destruct5barrier(size_tn);6~barrier();78//wa...
阅读全文
摘要:下面先对condition_impl进行简要分析。condition_impl在其构造函数中会创建两个Semaphore(信号量):m_gate、m_queue,及一个Mutex(互斥体,跟boost::mutex类似,但boost::mutex是基于CriticalSection的):m_mute...
阅读全文
摘要:除了thread,boost::thread另一个重要组成部分是mutex,以及工作在mutex上的boost::mutex::scoped_lock、condition和barrier,这些都是为实现线程同步提供的。mutexboost提供的mutex有6种:boost::mutexboost::...
阅读全文
摘要:thread自然是boost::thread库的主 角,但thread类的实现总体上是比较简单的,前面已经说过,thread只是一个跨平台的线程封装库,其中按照所使用的编译选项的不同,分别决定使用 Windows线程API还是pthread,或者MacintoshCarbon平台的thread实现。...
阅读全文
摘要:---恢复内容开始---asioboost目录(?)[-]一前言二实现思路通讯包数据结构连接对象连接管理器服务器端的实现对象串行化一、前言boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的...
阅读全文
摘要:asio的主要用途还是用于socket编程,本文就以一个tcp的daytimer服务为例简单的演示一下如何实现同步和异步的tcp socket编程。客户端客户端的代码如下:#include#include#includeusingboost::asio::ip::tcp;intmain(intarg...
阅读全文
摘要:创建buffer在io操作中,对数据的读写大都是在一个缓冲区上进行的,在asio框架中,可以通过asio::buffer函数创建一个缓冲区来提供数据的读写。buffer函数本身并不申请内存,只是提供了一个对现有内存的封装。chard1[128];size_tbytes_transferred = s...
阅读全文
摘要:IO模型io_service对象是asio框架中的调度器,所有异步io事件都是通过它来分发处理的(io对象的构造函数中都需要传入一个io_service对象)。asio::io_serviceio_service;asio::ip::tcp::socketsocket(io_service);在as...
阅读全文
摘要:问题来源:由于面试题中,考官出了一道简单的程序输出结果值的题:如下,[cpp]view plaincopyprint?classA{private:intn1;intn2;public:A():n2(0),n1(n2+2){}voidPrint(){cout<<"n1:"<<n1<<",n2:"<<...
阅读全文
摘要:同步Timerasio中提供的timer名为deadline_timer,它提供了超时计时的功能。首先以一个最简单的同步Timer为例来演示如何使用它。#include#includeintmain(){boost::asio::io_serviceio;boost::asio::deadline_...
阅读全文
摘要:Christopher KohlhoffCopyright © 2003-2012 Christopher M. Kohlhoff以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt)Boost....
阅读全文
摘要:Linux是一类Unix计算机操作系统的统称,Linux操作系统的内核的名字也是“Linux”, 在Linux下进行C++开发,需要注意许多问题,比如:减少不必要的编辑动作,减少编辑的时间。 Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户。例如,VS2005集成了编辑器,宏汇...
阅读全文
摘要:asio的主要用途还是用于socket编程,本文就以一个tcp的daytimer服务为例简单的演示一下如何实现同步和异步的tcp socket编程。客户端客户端的代码如下:#include#include#includeusingboost::asio::ip::tcp;intmain(intarg...
阅读全文
摘要:创建buffer在io操作中,对数据的读写大都是在一个缓冲区上进行的,在asio框架中,可以通过asio::buffer函数创建一个缓冲区来提供数据的读写。buffer函数本身并不申请内存,只是提供了一个对现有内存的封装。chard1[128];size_tbytes_transferred = s...
阅读全文
摘要:boost::asio设置同步连接超时CSDN上求助无果,只好用自创的非主流方法了。asio自带的例子里是用deadline_timer的async_wait方法来实现超时的,这种方法需要单独写一个回调函数,不利于把连接和超时封装到单个函数里。传统的Winsock编程可以先把socket设为非阻塞,...
阅读全文
摘要://test.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include#include#include#includeusingnamespaceboost::asio;usingboost::asio::ip::tcp;classconnect_handler{...
阅读全文
摘要:一般而言我们创建用于接收error的类型大多声明如下:boost::system::error_code error 我们用这个类型去接受在函数中产生的错误如socket.connect( endpoint, error);如果连接失败,错误类型会保存到error中,比如连接主机失败可能会返回这样...
阅读全文
摘要:●boost锁的概述boost库中提供了mutex类与lock类,通过组合可以轻易的构建读写锁与互斥锁。▲mutex对象类mutex类主要有两种:boost::mutex,boost::shared_mutex,其中mutex有lock和unlock方法,shared_mutex除了提供lock和u...
阅读全文
摘要:1.boost里的互斥量类型由mutex表示。代码示例:12345678910111213141516171819202122232425#include #include #include #include #include usingnamespacestd;usingnamespaceboos...
阅读全文
摘要:一、提前的话要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便。Fedora在安装的时候可以选择安装Fedora Eclipse,这个IDE很强大,C,C++,J...
阅读全文
摘要:虚拟机安装中文Fedora14和C/C++IDE开发环境2010-12-05 00:15:58标签:中文Fedora14IDE开发环境C/C++原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://shenlan.blog.51cto.co...
阅读全文
摘要:http://cygwin.com/index.html 还是看官网!很多用windows的朋友不习惯于用linux的开发环境。虽然很乐意尝试一下,但是往往怕 linux系统打乱了自己的正常生活:1〉装linux系统把windows系统给搞坏了,导致自己无法正常生活;2>linux开发上手太难,写出...
阅读全文
摘要:一、打开虚拟机VMware Workstation8.0,点击新建虚拟机。二、进入虚拟机向导,选择自定义。三、这里保持默认即可。四、这里选择“我以后安装操作系统”。五、这里选择Windows XP操作系统,如果您需要安装的系统属于其他系统,请选择相对应的操作系统。六、默认的路径为C:Document...
阅读全文
摘要:bind - boost头文件: boost/bind.hppbind是一组重载的函数模板.用来向一个函数(或函数对象)绑定某些参数.bind的返回值是一个函数对象.它的源文件太长了. 看不下去. 这里只记下它的用法:9.1 对于普通函数假如有函数 fun() 如下:void fun(int x, ...
阅读全文
摘要:一、boost库分类:(1)不需要编译库:any、array、asio、conversion、crc、bind/mem_fn、enable_if、function、lambda、mpl、smart_ptr...(2)需要编译的库:date_time、filesystem、function_types...
阅读全文
摘要:vs2008编译boost【一、Boost库的介绍】Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,其成员已近2000人...
阅读全文
摘要:参考:http://hi.baidu.com/need_for_dream/blog/item/c14a28086a504c33e92488b5.html环境: VS2010, boost1.38.0,解压缩后放在,D:/boost_1_38_0。編譯bjam(这个我没有试过,转过来以后参考)利用V...
阅读全文
摘要:由于全部编译BOOST库需要的时间太长,而且耗费空间,况且我只需要用ASIO库,所以就没有必要全部编译了。boost库到www.boost.org上下载。编译很简单,假设你的boost存放的目录是D:/BOOST_139。1.运行VS2008的命令提示行,进入D:/BOOST_139/tools/j...
阅读全文
摘要:理论上,本文适用于boost的各个版本,尤其是最新版本1.46.0;适用于各种C++编译器,如VC6.0,VS2003,VS2005,VS2008,gcc,C++ Builder等。一、下载首先从boost官方主页http://www.boost.org下载最新版boost安装包(目前最新版是1.4...
阅读全文
摘要:理论上,本文适用于boost的各个版本,尤其是最新版本1.45.0;适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,gcc,C++ Builder等。先总结一下Windows系统。一、下载首先从boost官方主页附链接下载最新版boost安装包(目前最...
阅读全文
摘要:首先说下环境,win7,vs2010。先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版。按照说明,直接运行“bootstrap.bat”,报“‘cl'不是内部或外部命令”的错误,于是在环境变量中添加了cl.exe的路径——“C...
阅读全文
摘要:vs2008编译boost【一、Boost库的介绍】Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,其成员已近2000...
阅读全文
摘要:实践是最好的办法。。学习C++,想试试线程,然后打算用boost库,结果boost库编译差点吓到我。。没看到比较完整的安装教程。。一直耽搁。今天动手。完成了。方法记录如下:1.下载boost从boost官网( http://www.boost.org )上下载最新的boost版本,现在最新是1.49...
阅读全文
摘要:一:什么是st_asio_wrapper它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统;二:st_asio_wrapper的特点效率高、跨平台、完全异步,当然这是从boost.asio继承而来;自动重连,数据透明...
阅读全文
摘要:最近把我的控件(ST_Curve www.st-curve.cn)升级到了64位,2010编译,本来以为很简单的问题,结果折腾了两天(也有可能我多年没做过界面和vc相关的东西了吧),于是把我遇到的问题罗列一下,希望对需要的人有所帮助(验证的不是很充分,不保证百分之百正确)一:如果一个很老的工程(比如...
阅读全文
摘要:过年了,人都走光了,结果一个人活也干不了。所以我便想找点东西玩玩。今天想试一下 libev 写点代码。原本在我那台 ubuntu 机器上一点问题都没有,可在 windows 机上用 mingw 编译出来的库一个 backend 都没有,基本不可用。然后网上就有同学推荐我试一下 libuv 。libu...
阅读全文
摘要:环境限定:TCP/IP下的socket网络传输;C/C++开发语言,32/64位机。目前有两种方式对数据进行传输:1)字符流形式,即将数据用字符串表示;2)结构型方式,即将数据按类型直接传输。1)的方式保证所有的数据都是清晰的字符串明文,没有平台不一致问题,但传输的数据不定长,复合数据类型(如str...
阅读全文
摘要:引言:在进行网络通信时是否需要进行字节序转换?相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换。原因如下:网络协议规定接收到得第一个字节是高字节,存放到低地址,所以发送时会首先去低地址取数据的高字节。小端模式的多字节数据在存放时,低地址存放的是低字...
阅读全文
摘要:最近在项目开发过程中,需要在采用JAVA作为语言的服务器与采用C++作为语言的服务器间进行通信,这就涉及到这两种语言间数据类型的转换以及网络字节序与主机字节序的区别。该文主要说说网络字节序和主机字节序的区别以及Little endian与Big endian的概念。其实编程的事就比较简单了 我也懒得...
阅读全文
摘要:在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个算法来尝试解决福特汽车公司的网络拥塞问题(RFC 896),该问题的具体描述是:如果我们的应用程序一次...
阅读全文
摘要:在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数:htonl()--"Host to Network Long int" 32Bytesntohl...
阅读全文
摘要:如果嵌套类型和其外部类型之间的关系需要成员可访问性语义,需要使用C++嵌套类,嵌套类型不应针对其声明类型以外的类型执行任务,而C++局部类允许类、结构和接口被分成多个小块儿并存储在不同的源文件中,这样的实现很容易开发和维护。C++局部类:在一个函数体内定义的类称为局部类。局部类中只能使用它的外围作用...
阅读全文
摘要:C++嵌套类1、嵌套类的名字只在外围类可见。2、类的私有成员只有类的成员和友元可以访问,因此外围类不可以访问嵌套类的私有成员。嵌套类可以访问外围类的成员(通过对象、指针或者引用)。3、一个好的嵌套类设计:嵌套类应该设成私有。嵌套类的成员和方法可以设为public。4、嵌套类可以直接访问外围类的静态成...
阅读全文
摘要:一、嵌套类在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型。之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。虽然嵌套类在外围类内部定义,但它是一个独立的类,基本上与外围类不...
阅读全文
摘要:【Node.js 自己封装的库 http_parse, libuv】Node.js介绍:一个网络框架,更多:http://www.oschina.net/p/nodejs官网:http://nodejs.org/代码库地址:https://github.com/joyenthttp_parser:介...
阅读全文
摘要:(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html(2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开源、免费,支持跨平台。http:...
阅读全文
摘要:在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可经典的C++库 STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合 标准比较远的情况下 那时还是有用的,当然目前vc71已经比较接近标准了...
阅读全文