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
IO复用使得程序能够同时监听多个文件描述符,比如客户端需要同时处理用户输入和网络连接,服务器端需要同时处理监听套接字和连接套接字,select系统调用可以使得我们监听自己感兴趣描述符,可读,可写,异常等事件。select能处理的异常只有带外数据。下面这个程序展示了它的一般用法。
#include
#include
#include
#include
#include //bas...
分类:
其他好文 时间:
2014-07-12 18:53:36
阅读次数:
249
??
IO复用
I/O复用使得程序能同时监听多个文件描述符,通常网络程序在下列情况下需要使用I/O复用技术:
客户端程序要同时处理多个socket
客户端程序要同时处理用户输入和网络连接
TCP服务器要同时处理监听socket和连接socket,这是I/O复用使用最多的场合
服务器要同时处理TCP请求和UDP请求。比如本章将要讨论的会社服...
分类:
系统相关 时间:
2014-07-02 08:35:51
阅读次数:
399
现行开发的软件中,基本没有啥是不联网的。连一个小小的游戏,也要联网,去下载点广告什么的。那么网络层的是不是可以有很多东西可以重用的呢?
本人之前在一个游戏公司做服务器端开发。有一个网络架构是这样设计的。
网络使用了IO复用模型select。当然,对于现在的服务器,可以使用epoll代替。
一个Opcodes类,类成员都是静态的常量,用于表示与服务器通信的操作码。我们称...
分类:
编程语言 时间:
2014-05-01 08:44:52
阅读次数:
433
为什么没有采用多线程或者IO复用,原因是在多线程或IO复用的情况下,当前目录是共享的,无法根据每一个连接来拥有自己的当前目录。多进程模式下,一个连接拥有2个进程,一个是nobody进程,一个是服务进程。为什么使用nobody进程的原因是:在PORT模式下,服务器会主动建立数据通道连接客户端,服务器可...
分类:
其他好文 时间:
2014-04-28 01:00:27
阅读次数:
551