当前位置:  技术问答>linux和unix

select()函数(新手请教)

    来源: 互联网  发布时间:2016-07-13

    本文导语:  int select(int n, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout); readfds即为我们监听的要进行读操作的套接字连接,第三个参数是我们监听的要进行写操作的套接字连接,第四个参数用于异常,而最...

int select(int n, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout);
readfds即为我们监听的要进行读操作的套接字连接,第三个参数是我们监听的要进行写操作的套接字连接,第四个参数用于异常,而最后一个参数可以用来设定超时.
如果在一个套接字中,既有读操作,又有写操作,该怎么设置参数??

|
把读的文件描述符加入writefds集合,写的文件描述符加入readfds集合就可以了
或者还可以用poll函数

|
//假设描述符fd
fd_set writefds;
fd_set readfds;
fd_set errfds;
struct timeval tv;
int ret;

FD_ZERO(&writefds);
FD_SET(fd, &writefds);

FD_ZERO(&errfds);
FD_SET(fd, &errfds);

FD_ZERO(&readfds);
FD_SET(fd, &readfds);
tv.tv_sec = 5;
tv.tv_usec = 0;

ret = select(fds+1, &readfds, &writefds, &errfds);
if(ret != -1)
{
if (FD_ISSET(fd, &errfds))
{
*len = 0;
return -2;
}
else if(FD_ISSET(fd, &readfds)
{
//可读
}
else if(FD_ISSET(fd, &writefds)
{
//可写
}

}
else
{
//error
}

|
你把读的加入writefds文件符集,写的加入readfds就可以了啊。

|
如果你对这些文件描述符集不感兴趣,也就是都设置为null。那么select就可以用来当做一个更加精确的定时器来使用了。

|
同时把这个套接字描述符在readfds, writefds中都设置下,这样一但可写或者可读就可以获知。

    
 
 

您可能感兴趣的文章:

  • Select和listen函数的区别
  • select函数。
  • 请教select函数
  • 秒爆,求教育,求解释,linux 的select()函数
  • 关于select函数返回错误的处理
  • select函数的问题
  • win32下的select函数可以监听文件句柄吗?
  • select函数问题?
  • select函数
  • 请教套接字中的select()函数问题
  • Linux 中 select 函数问题 !!!!!!!!!!!!!!
  • 请问使用SELECT()函数怎么监测串口发送数据?
  • 关于Select()函数。
  • 关于select函数中struct timeval问题
  • 关于select函数
  • 关于select()函数的用法
  • select函数的作用是什么呢?谢谢
  • 我做了个socket服务器,但是客户端接收数据的时候用select()函数????可接受不到
  • select函数疑问
  • 为什么作了信号处理之后select函数就不能正常工作了?
  • 请教linux下管理多个socket用什么,难道只能用select?
  • 新手请教一个select accept 问题 ?
  • 请教select的使用问题
  • 请教 select 问题?
  • @@请教poll模式和select中的FD_SETSIZE
  • 请教大家一下linux下有关select模式的用法
  • 【请教】Linux下用select()监测socket,是不是通常不去监测可写状态的?
  • 请教:用select进行多I/O操作的时候,这些I/O是否阻塞,是不是已经意义不大了?
  • pc和开发板上使用select多路复用,不同的现象问题请教。
  • 请教select函数等待超时的问题
  • linux下的select函数以及fd_set结构体有人会用吗?我有点小问题想请教一下。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.accessibility类accessiblestate的类成员方法: selected定义及介绍
  • 究竟怎么样取得的<select name="select_user" size="8" multiple>值
  • java命名空间javax.accessibility类accessiblestate的类成员方法: selectable定义及介绍
  • man select 结果返回 No manual entry for select
  • java命名空间javax.swing.tree类defaulttreeselectionmodel的类成员方法: selection定义及介绍
  • select <0时调用exit(0),为什么程序没有退出,而是继续执行select了?
  • java命名空间javax.swing.tree类defaulttreecellrenderer的类成员方法: selected定义及介绍
  • insert into select和select into的使用和区别介绍
  • java命名空间java.awt.event类itemevent的类成员方法: selected定义及介绍
  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • java命名空间javax.swing类defaultbuttonmodel的类成员方法: selected定义及介绍
  • JDBC里select sum和select返回的字段类型不一样
  • java命名空间javax.swing.text.html类html.tag的类成员方法: select定义及介绍
  • sql代码:select database select all table
  • java命名空间javax.swing.text.html类html.attribute的类成员方法: selected定义及介绍
  • Oracle中select 1和select *的区别
  • java命名空间javax.swing.plaf.synth接口synthconstants的类成员方法: selected定义及介绍
  • jquery下拉select控件操作方法分享(jquery操作select)
  • java命名空间javax.sound.midi类shortmessage的类成员方法: song_select定义及介绍
  • INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别
  • java命名空间javax.swing类jfilechooser的类成员方法: cancel_selection定义及介绍
  • select into 和 insert into select 两种表复制语句


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3