• Select -- synchronius I/O multiplexing

    • select, FS_SET,FD_CLR,FD_ISSET,FD_ZERO
 #include <sys/time.h>
#include <sys/types.h>``
#include <unistd.h> int select(int nfds,fd_set *readfds, fd_set *writefds,fd_set exceptfds,struct timeval* timeout); void FD_CLR(int fd, fd_set *set);
void FD_ISSET(int fd,fd_set *set);
void FD_SET(int fd, fd_set *set);
void FD_ZERO(fd_set *set);
  • poll:

    • #include<poll.h>
    • int poll(struct pollfd *fds, nfds_t nfds,int timeout);

struct pollfd{

  int fd;

  short events;

  short revents;

};

(一)如果客户端关闭套接字close

而服务器调用一次write服务器就会收到一个RST segment(TCP传输层)

如果服务器端再次调用了write,这个时候就会产生SIGPIPE信号,如果不忽略该信号则会导致整个进程退出。

解决办法:signal(SIGPIPE, SIG_IGN);

(二):TIME_WAIT状态对大并发服务器的影响:

应该尽可能在服务器端避免出现TIME_WAIT状态

如果服务器端主动断开连接(先于客户端调动close),那服务器端就会进入TIME_WAIT状态,这样在一定时间内内核会保持一些资源,使得服务器的并发性降低。

解决办法:让客户端主动断开连接,这样就把TIME_WAIT状态分散到大量的客户端,如果客户端不活跃了,一些客户端不断开连接,这样就会占用服务器的连接资源。所以服务器需要有机制来剔除不活跃的连接close

Linux IO多路复用 select/poll/epoll的更多相关文章

  1. 转一贴,今天实在写累了,也看累了--【Python异步非阻塞IO多路复用Select/Poll/Epoll使用】

    下面这篇,原理理解了, 再结合 这一周来的心得体会,整个框架就差不多了... http://www.haiyun.me/archives/1056.html 有许多封装好的异步非阻塞IO多路复用框架, ...

  2. IO多路复用select/poll/epoll详解以及在Python中的应用

    IO multiplexing(IO多路复用) IO多路复用,有些地方称之为event driven IO(事件驱动IO). 它的好处在于单个进程可以处理多个网络IO请求.select/epoll这两 ...

  3. Python异步非阻塞IO多路复用Select/Poll/Epoll使用,线程,进程,协程

    1.使用select模拟socketserver伪并发处理客户端请求,代码如下: import socket import select sk = socket.socket() sk.bind((' ...

  4. 最快理解 - IO多路复用:select / poll / epoll 的区别.

    目录 第一个解决方案(多线程) 第二个解决方案(select) 第三个解决方案(poll) 最终解决方案(epoll) 客栈遇到的问题 从开始学习编程后,我就想开一个 Hello World 餐厅,由 ...

  5. python网络编程——IO多路复用select/poll/epoll的使用

    转载博客: http://www.haiyun.me/archives/1056.html http://www.cnblogs.com/coser/archive/2012/01/06/231521 ...

  6. Linux 网络编程的5种IO模型:多路复用(select/poll/epoll)

    Linux 网络编程的5种IO模型:多路复用(select/poll/epoll) 背景 我们在上一讲 Linux 网络编程的5种IO模型:阻塞IO与非阻塞IO中,对于其中的 阻塞/非阻塞IO 进行了 ...

  7. Linux IO多路复用 select

    Linux IO多路复用 select 之前曾经写过简单的服务器,服务器是用多线程阻塞,客户端每一帧是用非阻塞实现的 后来发现select可以用来多路IO复用,就是说可以把服务器这么多线程放在一个线程 ...

  8. 【操作系统】I/O多路复用 select poll epoll

    @ 目录 I/O模式 I/O多路复用 select poll epoll 事件触发模式 I/O模式 阻塞I/O 非阻塞I/O I/O多路复用 信号驱动I/O 异步I/O I/O多路复用 I/O 多路复 ...

  9. I/O多路复用 select poll epoll

    I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. select select最早于1983年出现在4.2BSD中,它通 ...

随机推荐

  1. Unity3D常用网络框架与实战解析 学习

    Socket using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; u ...

  2. Maven知识整理

    一.概念: Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统( ...

  3. apache2 配置虚拟主机

    查看 apache2 的配置位置: whereis apache2 我的在:/etc/apache2 sites-available  文件夹下面放的就是 虚拟站点的配置文件: 随便复制一个改改: c ...

  4. python一些东西

    assert repr() >>> a ['d', 'c', 'c', 'f', 'a', 'a', 'b', 'c', 'd'] >>> sorted(a) [' ...

  5. rtmp和http方式在播放flv方面的各自优势和劣势

    下面是查的一点资料,比较一下用fms的rtmp和web的http播放flv的差别: 1. 区别 用HTTP方式:先通过IIS 将FLV下载到本地缓存,然后再通过NetConnection的本地连接来播 ...

  6. 手机浏览器User-Agent信息

    ChormeMozilla/5.0 (Linux; Android 4.2.1; AMOI N828 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gec ...

  7. MySQL 内存溢出

    select EVENT_NAME ,SUM_NUMBER_OF_BYTES_ALLOC from memory_summary_global_by_event_name order by SUM_N ...

  8. TCP/UDP端口列表(WIKIpedia)

    计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口列表 ...

  9. Git常见使用方法

    图参考:http://www.ruanyifeng.com/blog/2014/06/git_remote.html 1.GitLab配置 git config --global user.name ...

  10. intellij idea 设置 Error 提示颜色修改

    File--->Settings --->Editor --->ColorScheme--->General --->Errors and Warning--->E ...