在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文...
分类:
系统相关 时间:
2014-09-09 13:55:08
阅读次数:
297
#include #include #include #include int main(int argc, char *argv[]){ int maxfd; char buf[256]; fd_set rset; while(1){ FD_ZERO(&rse...
分类:
其他好文 时间:
2014-09-07 21:09:25
阅读次数:
182
select函数对数据结构fd_set进行操作,fd_set是一个bitmap,该集合由打开的文件描述符构成。对于管道而言,select是通过检查管道是否阻塞,来进行监听的。只要所监听的管道非阻塞,select就能立马获知,并将其在fd_set中的相应为置1。管道非阻塞只有两种情况,一种是客户端向管...
分类:
其他好文 时间:
2014-09-06 23:41:24
阅读次数:
263
几个问题:1.libevent到底用的是select还是iocp,然后是如何突破64限制的typedef struct fd_set { u_int fd_count; /* how many are SET? */ SOCKET fd_...
分类:
其他好文 时间:
2014-09-05 14:15:41
阅读次数:
191
只要接触过c/c++网路编程人都可能会知道select io 模式,网络书籍都说 fd_set {int num; SOCKET arr[64]} 有所限制,因为数组的长度只有64,那么超过64你就不能放,要么你就是用多线程分别实用select.。一些书籍通过改定义宏 使数组的长度变长,但也不实用,...
分类:
其他好文 时间:
2014-09-04 16:26:19
阅读次数:
209
/**
* TCP,使用非阻塞 connect
**/
#include "unp.h"
int
connect_nonb(int sockfd, const SA *saptr, socklen_t salen, int nsec)
{
int flags, n, error;
socklen_t len;
fd_set rset, wset;
struct timeval tval;
//1.调用 fcntl 设置套接字为非阻塞
flags = Fcntl(sockfd, ...
分类:
其他好文 时间:
2014-08-24 23:57:13
阅读次数:
464
SYNOPSIS /* According to POSIX.1-2001 */ #include /* According to earlier standards */ #include #include #include int select(int nfds, fd_set *readfds...
分类:
系统相关 时间:
2014-08-24 00:18:21
阅读次数:
401
select 可以感知文件表述符集合中的变化,如果办fd0(即标准输入)放入select的read fd set,发现只有按回车的时候select才会返回。查了下要把终端的缓冲大小设为1,这样就能实现击键后马上反应了。#include #include #include #include #incl...
分类:
系统相关 时间:
2014-08-17 15:30:02
阅读次数:
183
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