
网络编程
kaka11
这个作者很懒,什么都没留下…
展开
-
libjingle学习笔记(1)--从Login example开始
libjingle是gtalk客户端所使用的基础库,主要分为以下几个模块:base // 一些网络方面的基础库的封装xmllite // 因为xmpp协议的内容是以xml为基础的,所以这个模块是对xml解析库(expat)的一些封装xmpp // xmpp协议的实现p2p // p2p的实现,包括一些nat和firewall穿越的技术session // gtalk对于声音和文原创 2009-11-13 16:09:00 · 8708 阅读 · 7 评论 -
zeromq一直困扰我的问题和自我反省
今天去zeromq的maillist发信问了两个一直困扰我几天的问题了,结果迅速收到回复,立即想明白了,大牛还是很多的,看来以后自己要把代码再吃得透点,不明白的地方及时问大牛,能节省很多时间:1. zeromq的多个I/O线程之间没有使用同步机制,会不会产生问题?我本来原创 2011-08-01 23:03:25 · 39594 阅读 · 12 评论 -
zeromq源代码分析3------zeromq中的消息
本文主要讲zeromq的消息体系zmq_msg_t及其相关的操作函数。因为tcp是一种字节流类型的协议,木有边界,所以把该消息边界的制定留给了应用层。通常有两种方式实现:1. 在传输的数据中添加分隔符。2. 在每条消息中添加size字段。而zeromq可以说选择了第二种方式。先来原创 2011-07-20 14:10:14 · 13778 阅读 · 11 评论 -
zeromq源代码分析5-1------管道相关的数据结构yqueue, ypipe, pipe等
本文主要分析管道相关的数据结构yqueue, ypipe, pipe等。我们一个个来分析,先看yqueue:yqueue是一个高效的队列实现。它主要通过批量的分配/释放数据元素来减少分配/释放的次数来提高效率。而所谓的批量分配的数据结构称之为chunk_t: // Indivi原创 2011-07-21 12:22:16 · 7209 阅读 · 5 评论 -
zeromq源代码分析4------encoder,decoder,multipart_message
decoder_base中的:unsigned char *read_pos; // 从缓冲区读出的内存区域位置,指向in_progress的数据区域或者tmpbuf size_t to_read; // 从缓冲区读出的大小 step_t ne原创 2011-07-20 21:12:47 · 7518 阅读 · 0 评论 -
zeromq源代码分析2------线/进程间通信方式
本文我们讲一下zeromq的线/进程间通信方式。原创 2011-07-19 16:15:55 · 13961 阅读 · 3 评论 -
asio reactor模拟Proactor代码分析笔记
今天看了ASIO的介绍,不太明白asio在POSIX上如何用reactor模拟proactor。所以稍微看了下源代码,此文当作笔记。ASIO Proactor: Proactor design pattern (adapted from [POSA2])原创 2011-07-25 22:30:56 · 6648 阅读 · 2 评论 -
zeromq源代码分析6-2------REQ和REP
本文我们讲一下req和rep这对zeromq的socket。这是一个经典的Request-Reply的例子。原创 2011-07-22 17:19:03 · 11807 阅读 · 1 评论 -
zeromq源代码分析6-3------ROUTER和DEALER
zeromq的zero表明它木有broker,但是并不代表着他不能有broker,而是作为device选项,使用ROUTER socket和DEALER socket就可以模拟一个简单broker。可以从tutorial中看到模拟的代码://// Simple request原创 2011-07-24 23:52:46 · 18128 阅读 · 2 评论 -
zeromq源代码分析6-1------zeromq各种类型的socket之socket_base
我们在zeromq源代码分析6中分析zeromq所有类型的socket,主要集中分析send和recv函数。今天我们先分析一下所有socket中base class------socket_base:先看send(2)函数:int zmq::socket_base_t::send原创 2011-07-22 16:31:43 · 9492 阅读 · 0 评论 -
zeromq源代码分析5-3------管道相关的数据结构yqueue, ypipe, pipe等
这篇文章我们讲一下pipe, 从前面的博文中你了解了zeromq数据读写是异步的,主要与管道交互。先说一下pipe的基本功能吧:1. 流量控制: 有一个HWM(最高水位), LWM(最低水位)和active标志。2. 通过发送终结符类型的消息来销毁管道。3. swap模式。一个原创 2011-07-21 17:35:58 · 6509 阅读 · 0 评论 -
zeromq源代码分析5-2------管道相关的数据结构yqueue, ypipe, pipe等
本文我们来讲一下ypipe的实现。其实ypipe就是上一篇文章中提到的yqueue的一个为lock-free的封装加强实现。ypipe主要有写入write(), 读取read(), flush()的功能。当一个元素被写入管道的时候,如果不调用flush()函数,那么是不能从该管道原创 2011-07-21 15:35:09 · 8974 阅读 · 2 评论 -
lwIP源代码分析1-------内存管理模块的分析
memp.c动态内存池管理器, lwip拥有各种不同的内存池来为各个模块的小对象分配内存。一个内存池主要有name,description,number(内存池里的内存节点的数目)和size(内存池里的内存节点的大小)内存节点的struct描述:struct memp { struct memp *next; // 指向下一个内存节点的指针#if MEMP_OVERFLOW_CHECK // 如果进行内存溢出检测, const char *file; // 发生溢出时调用函数的文件名原创 2011-02-21 21:13:00 · 17228 阅读 · 5 评论 -
Ice源码分析笔记1--IceUtils
Ice是Zero C的一个分布式框架, 利用corba的思想,加强和改善了corba。本系列文章主要通过本人对其源码的分析来讲述Ice的工作原理。Ice主要包括以下几个部分: Ice: Ice核心模块 IceUtils: Utils工具模块 IceGrid: Ice节点模块 。。。Ice是利用自己定义的中间语言然后编译成各种常用语言的网络操作方法,然后调用各自语言下层的模块来进行工作的,在这里我主要是以c++代码来学习的。本文主要讲述IceUtils的各个工具类。1. Shared.h Shared原创 2010-11-16 09:13:00 · 6733 阅读 · 2 评论 -
libjingle学习笔记(2)--Thread MessageQueue SocketServer...
一. Thread类是libjingle中比较核心的类。 我把他的功能主要分为三块: 1. Thread相关函数: 主要是对不同操作系统Thread的统一接口包装。 其中包括了Start(), Stop(), Join()等线程控制函数, 也包括了优先级控制相关的函数, 还有一个定位查找的功能。关于定位查找的功能主要是由ThreadManager控制的, ThreadManager类主要原创 2009-11-16 15:39:00 · 6709 阅读 · 2 评论 -
zeromq源代码分析1------基本工作流程分析
zeromq源代码分析1------基本工作流程分析原创 2011-07-19 13:42:00 · 28601 阅读 · 15 评论