C语言-Socket编程之Select函数
来源:互联网 发布:苹果经常无法加入网络 编辑:程序博客网 时间:2024/04/26 19:44
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)(其实可以使用ioctlsocket函数来实现非阻塞socket)。可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高)方式工作的程序,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。下面详细介绍一下!
int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);
先说明两个结构体:
一个给定的文件描述符从集合中删除FD_CLR(int ,fd_set*),检查集合中指定的文件描述符是否可以读写FD_ISSET(int ,fd_set* )。一会儿举例说明。
fd_set *errorfds同上面两个参数的意图,用来监视文件错误异常。
返回值:
负值:select错误 正值:某些文件可读写或出错 0:等待超时,没有可读写或错误的文件
在有了select后可以写出像样的网络程序来!举个简单的例子,就是从网络上接受数据写入一个文件中。
例子:
main()
{
}//end main
- C语言-Socket编程之Select函数
- socket编程之select()函数
- linux c语言 select函数用法(及Unix系统下的伯克利socket编程)
- 【Socket】详述socket编程之select()和poll()函数
- Socket编程之Select
- socket编程之select()
- socket编程之select()
- socket编程之select()
- socket编程之select()
- socket编程之select()
- socket 编程 之 select
- socket编程之select()
- socket编程之select()
- socket编程之select()
- socket编程之select()
- socket编程之select()
- socket编程之select()
- SOCKET编程之select
- 颜色名列表
- jqueyr sortable 参数详解
- nginx+keepalived主辅切换
- Win2008 IIS7日期时间格式更改最简便方法
- [批处理] 找到几天前的文件 并删除
- C语言-Socket编程之Select函数
- loadrunner socket 测试
- C语言中 ^的用法
- svn hooks
- centos install gcc
- Java模式(适配器模式)
- 用mootools实现checkbox全选功能
- vim中快速的定位函数或者类定义
- C语言-程序中执行cmd命令并获取结果