宏FD_CLR: 功能移除set中值为fd的套接字,并将其后面的套接字,前移,总的来说就是,删除集合set中套接字fd
#define FD_CLR(fd, set) //fd 套接字 set集合
do {
u_int __i;
for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++)//far * 跨进程指针
{
if (((fd_set FAR *)(set))->fd_array[__i] == fd) //找到套接字数组中和参数fd相同值
{
while (__i < ((fd_set FAR *)(set))->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--;//将cout-1
break;//跳出循环
}
}
} while(0)
宏FD_ZERO:将集合中的元素个数设置为0;
#define FD_ZERO(set)
(((fd_set FAR *)(set))->fd_count=0)
宏FD_ISSET :检查fd是否在set中
#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set))