69,371
社区成员
发帖
与我相关
我的任务
分享
static int init_sockfd(void)
{
struct sockaddr_in thisaddr;
if((sockfd=socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
NMN_DEBUG(log_lv_error, "init sockfd failed ...\n");
return -1;
}
thisaddr.sin_family = AF_INET;
thisaddr.sin_addr.s_addr = htonl(INADDR_ANY); //#define INADDR_ANY ((unsigned long int) 0x00000000)
thisaddr.sin_port = htons(0);
if(bind(sockfd, (struct sockaddr *)&thisaddr, sizeof(thisaddr)) == -1) {
NMN_DEBUG(log_lv_error, "bind failed ...\n");
return -1;
}
return 0;
}
FD_ZERO(&fds); //每次循环都要清空集合,否则不能检测描述符变化
FD_SET(sock,&fds); //添加描述符
FD_SET(fp,&fds); //同上
maxfdp=sock>fp?sock+1:fp+1; //描述符最大值加1
select(maxfdp,&fds,&fds,NULL,&timeout);