
网络编程学习
文章平均质量分 80
蒋_X_X
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Libevent源码学习(四) 事件内部流程解析下部
上一节过后,大家应该对于事件状态转换有了一定的了解,具体的代码部分也已经详细分析到了事件状态转换为EVLIST_INSERTED状态.下面接着上面的部分接着说明.1.事件链表上节提到过很多次链表这么个东西,具体libevent怎么实现链表,大家可以参考compat/sys/queue.h文件.这里把常用的链表定义操作有详细的代码,基本上全部使用宏的形式去实现函数,应该是为了更高效的运行,有原创 2015-10-31 10:59:48 · 733 阅读 · 0 评论 -
socket阻塞与非阻塞,同步与异步、I/O模型
原作写的很好,把这几个知识点做了一个系统详细的解释。顶一个!原作链接:http://blog.youkuaiyun.com/hguisu/article/details/74533901. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出转载 2015-10-08 16:46:02 · 392 阅读 · 0 评论 -
IO多路复用 Select模型
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用转载 2015-10-20 21:04:14 · 389 阅读 · 0 评论 -
libevent安装编译并测试
由于之前在windows平台下接触过一个网络数据过滤的程序,当时也是第一次写关于网络方面的程序(之前写的小程序不算),明显的经验不足。很多知识都不够用,最后导致这个程序没有完成。但是过程中学到了不少的东西,多线程,队列,锁机制,缓冲区管理等等。还有各种网络模型,包括典型的轮询方式,多路复用select以及windows下的IOCP等。这段时间在看关于linux下面的编程,算是为找工作做准备吧,原创 2015-10-08 16:14:27 · 1106 阅读 · 0 评论 -
IO多路复用 epoll模型
1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口 epoll操作过程需要三个接口,分别如下:转载 2015-10-20 21:44:27 · 376 阅读 · 0 评论 -
HTTP协议及工作原理解析
超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议。HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息。HTTP 请求报文HTTP 请求报文由请求行、请求头部、空行 和 请求包体 4 个部分组成,如下图所示: 下面对请求报文格式进行简单转载 2015-10-21 21:02:42 · 568 阅读 · 0 评论 -
Libevent源码学习(二) 事件的概念
上一节结合代码解释了一下如何libevent可以支持多种不同网络模型,并且屏蔽不同模型之间的区别.其中也涉及到了一个很重要的概念:事件.这里给大家详细解释一下事件的概念.事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件,等等。上面的解释是抄录百度百科的翻原创 2015-10-27 09:21:35 · 610 阅读 · 0 评论 -
Libevent源码学习(一) 支持多种网络模型原理
在linux下学习了一段时间网络编程,主体的编程思路懂得差不多了(windows下做过,基本差不多),所以决定看些开源的库来实际学习一下.故选择了相对简练的libevent进行代码阅读.在读的过程中,参考了一位已经将libevent解析的很清楚的大神的博客.http://blog.youkuaiyun.com/sparkliang/article/details/4957667这里算是自己学习过程中的一些原创 2015-10-21 21:52:17 · 822 阅读 · 0 评论 -
Libevent源码学习(三) 事件内部流程解析上部
上一节简单的介绍了事件的概念,这节就实际利用libevent的代码与上节最后说到的几个问题进行详细说明.为了简单来考虑,这里不先不考虑超时事件与信号事件,只进行读写事件的解释.1.事件的定义事件是libevent一个非常重要的概念,先来看看它的数据结构定义.代码位于event.h文件中struct event { TAILQ_ENTRY (event) ev_next; TAILQ原创 2015-10-27 15:59:30 · 519 阅读 · 0 评论