当前位置:  开发笔记 > 编程语言 > 正文

在c中使用套接字时,FD_SET和FD_ISSET背后有什么数据结构?

如何解决《在c中使用套接字时,FD_SET和FD_ISSET背后有什么数据结构?》经验,为你挑选了2个好方法。

使用套接字时,FD_SET和FD_ISSET宏背后的数据结构是什么?



1> user44556..:

原型:

void FD_SET(int fd, fd_set* fdset);
int FD_ISSET(int fd, fd_set* fdset);

来自sys/select.h

typedef struct fd_set {
  u_int  fd_count;
  SOCKET fd_array[FD_SETSIZE];
} fd_set;



2> paxdiablo..:

我似乎记得它只是一个位掩码.一个字符数组(或其他一些基本类型),其中char的每个位表示每个文件描述符的状态.

如果某些实现允许变量大小的结构,但是我见过的大多数(并且这些通常是较旧的)只允许最大数量的文件描述符,它们也有一个限制变量.

但是,只要提供FD_*宏或函数来正确初始化和更改它们,实现就可以自由使用它想要的任何数据结构.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有