首页
社区
课程
招聘
[旧帖] [求助][求助] 0.00雪花
发表于: 2013-8-7 10:21 1574

[旧帖] [求助][求助] 0.00雪花

2013-8-7 10:21
1574
《windows网络编程》上有这样一个例子:
     select的函数原型:

     int select {

         int nfds;   // 该参数被忽略,兼容早期Berkeley套接字应用程序,在Unix下是该参数代表监控最大的套接字数加1

         fd_set FAR * readfds;    // 检查可读性 

         fd_set FAR * writefds;   // 检查可写性

         fd_set FAR * exceptfds;  // 用于带外数据

         const struct timeval FAR * timeout // 超时设置

     }; // 从根本上说,fdset数据类型代表着一系列特定套接字的集合

      readfds集合包括符合下述任何一个条件的套接字:

     ■ 有数据可以读入。
     ■ 连接已经关闭、重设或中止。
     ■ 假如已调用了listen,而且一个连接正在建立,那么accept函数调用会成功。 

     writefds集合包括符合下述任何一个条件的套接字:

     ■ 有数据可以发出。
     ■ 如果已完成了对一个非锁定连接调用的处理,连接就会成功。

        看到网上有这样的代码:
        FD_ZERO(&readfd);
  FD_ZERO(&writefd);
    
  FD_SET((UINT)fd1, &readfd);
  FD_SET((UINT)fd1, &writefd);
  FD_SET((UINT)fd2, &writefd);
  FD_SET((UINT)fd2, &readfd);
        select(maxfd,&readfd,&writefd,NULL,×et);
  if(FD_ISSET(fd1, &readfd))
    {

                 }  
  if(FD_ISSET(fd2, &writefd))
    {
      
    }
 然后FD_ISSET(fd2, &writefd)这个有困惑,这个是怎么判断套接字有数据要写的?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
哎,怎么都没人的……
2013-8-7 11:55
0
游客
登录 | 注册 方可回帖
返回
//