0.春阳语录,代码嵌套三层以上就是一坨垃圾。因此良好的编程风格从封装开始。1.封装select服务器模型 1.1 如何封装?将select需要的数据结构都封装成结构体,通过参数在函数之间传递,将固定的操作封装成相应的函数。 1.2 封装后的程序: 1.2.1 封装的头文件 select_t...
分类:
系统相关 时间:
2014-07-31 23:23:40
阅读次数:
442
#include #include #include #include #include #include #include #include #include #include "rio.h"#include #include #define ERR_EXIT(m) \ do { \ ...
分类:
编程语言 时间:
2014-07-31 02:35:06
阅读次数:
411
1.迭代服务器模型 1.1 迭代服务器是处理多个请求时一种最简单直接的思路,即使用while循环,它不具有并发能力,即必须一个一个的处理客户的请求。 1.2 程序示例。#include "def.h"int listenfd_init(); //返回一个处于监听状态的套接字描述符void do...
分类:
编程语言 时间:
2014-07-31 02:18:25
阅读次数:
365
简介
NIO的作用就是改进程序的性能。因为有时候程序的性能瓶颈不再是CPU,而是IO。这时候NIO就派上用场了。NIO的原理就是尽量利用系统底层的资源来提高效率,比如利用DMA硬件减小CPU负荷,利用操作系统的epoll机制避免线程频繁切换。通过底层资源提高系统的吞吐量。
缓冲区
缓冲区就是一个固定大小的一组数据。缓冲区有四个非常重要的属性:容量,限制,位置,标记。容量就是一个缓冲区...
分类:
编程语言 时间:
2014-07-31 00:07:35
阅读次数:
388
1.select 模型 1.1 select 函数原型如下,其中 nfds 表示的描述符的最大值加1(因为这里是左闭右开区间),中间三个参数分别表示要监听的不同类型描述符的集合,timeout用来表示轮询的时间间隔,这里用NULL表示无限等待。 1.2 使用 select函数编写客户端程...
分类:
系统相关 时间:
2014-07-30 00:57:12
阅读次数:
476
一个tcp的客户端服务器程序服务器端不变,客户端通过I/O复用轮询键盘输入与socket输入(接收客户端的信息)服务器端: 1 /*selcet服务器客户端模型: 2 1.客户端关闭后,服务器再向客户端发送信息,第一次会收到一个RST复位报文,第二次会收到SIGPIPE信号,导致服务器关闭,必须对这...
分类:
其他好文 时间:
2014-07-30 00:51:22
阅读次数:
492
http://blog.csdn.net/heyan1853/article/details/6457362首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiplexing (selectandpoll)signal driven ...
分类:
其他好文 时间:
2014-07-29 20:47:22
阅读次数:
267
linux提供了select、poll、epoll接口来实现IO复用,三者的原型如下所示,本文从参数、实现、性能等方面对三者进行对比。int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct t...
分类:
其他好文 时间:
2014-07-29 20:41:12
阅读次数:
338
http://blog.csdn.net/sunboy_2050/article/details/6126712select用法#include #include #include #include int select(int n, fd_set *readfds, fd_set *writ...
分类:
其他好文 时间:
2014-07-29 20:38:45
阅读次数:
384
Nginx特点:1,跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。2,配置异常简单:非常容易上手。配置风格跟程序开发一样,神一般的配置。3,非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)。4,事件驱动:通信机...
分类:
其他好文 时间:
2014-07-29 15:02:58
阅读次数:
218