18,356
社区成员
发帖
与我相关
我的任务
分享
fd_set fdSocket;
FD_ZERO(&fdSocket);
for (int i=0;i<100;i++)
{
SOCKET hSock = socket(AF_INET,SOCK_STREAM,0);
if (hSock!=INVALID_SOCKET)
{
FD_SET(hSock, &fdSocket);
}
}
timeval tm;
int nRet;
while(true)
{
fd_set fdRead = fdSocket;//用副本(这里只简单的执行内存拷贝)
tm.tv_sec = 2;
tm.tv_usec = 0;
nRet = ::select(0,&fdRead,NULL,NULL,&tm);
if(nRet>o)
{
for(int i=0;i<fdRead.fd_count;i++)
{
nRet = recv(fdRead.fd_arry[i],...);
}
}
}
#define FD_SET(fd, set) do { \
u_int __i; \
for (__i = 0; __i < ((fd_set FAR *)(set))->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_SETSIZE) { \
((fd_set FAR *)(set))->fd_array[__i] = (fd); \
((fd_set FAR *)(set))->fd_count++; \
} \
} \
} while(0)