免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2161 | 回复: 0
打印 上一主题 下一主题

FD_SET,FD_ISSET函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-25 16:02 |只看该作者 |倒序浏览

FD_SET 打开类型fd_set的某一位
FD_ZERO初始化fd_set
FD_ISSET测试结构fd_set中的描述字

直接到vc98/include的文件中查找他们就可以找到代码。

代码一:
#ifndef FD_SETSIZE
#define FD_SETSIZE      64
#endif /* FD_SETSIZE */
typedef struct fd_set {
        u_int fd_count;               /* how many are SET? */
        SOCKET  fd_array[FD_SETSIZE];   /* an array of SOCKETs */
} fd_set;
extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *);
#define FD_CLR(fd, set) do { \
    u_int __i; \
    for (__i = 0; __i ;fd_count ; __i++) { \
        if (((fd_set FAR *)(set))->;fd_array[__i] == fd) { \
            while (__i ;fd_count-1) { \
                ((fd_set FAR *)(set))->;fd_array[__i] = \
                    ((fd_set FAR *)(set))->;fd_array[__i+1]; \
                __i++; \
            } \
            ((fd_set FAR *)(set))->;fd_count--; \
            break; \
        } \
    } \
} while(0)
#define FD_SET(fd, set) do { \
    u_int __i; \
    for (__i = 0; __i ;fd_count; __i++) { \
        if (((fd_set FAR *)(set))->;fd_array[__i] == (fd)) { \
            break; \
        } \
    } \
    if (__i == ((fd_set FAR *)(set))->;fd_count) { \
        if (((fd_set FAR *)(set))->;fd_count ;fd_array[__i] = (fd); \
            ((fd_set FAR *)(set))->;fd_count++; \
        } \
    } \
} while(0)
#define FD_ZERO(set) (((fd_set FAR *)(set))->;fd_count=0)
#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set))

代码二:
typedef int32_t __fd_mask;
#define _NFDBITS (sizeof(__fd_mask) *

     /* 8 bits per byte */
#define __howmany(x,y)  (((x)+((y)-1))/(y))
#ifndef _FD_SET
#  define _FD_SET
   typedef struct __fd_set {
     long fds_bits[__howmany(FD_SETSIZE, (sizeof(long) *

)];
     } fd_set;
#  ifndef _KERNEL
#    ifdef __cplusplus
        extern "C" {
#    endif /* __cplusplus */
#ifdef _INCLUDE_HPUX_SOURCE
#    define FD_SET(n,p)  (((__fd_mask *)((p)->;fds_bits))[(n)/_NFDBITS] |= (1 ;fds_bits))[(n)/_NFDBITS] &= ~(1 ;fds_bits))[(n)/_NFDBITS] & (1




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/111136/showart_2160063.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP