Select()使用相同的套接字描述符发送和接收
我希望使用select在同一套接字描述符(服务器端)上的客户机/服务器上进行接收和发送Select()使用相同的套接字描述符发送和接收,c,unix,select,client,recv,C,Unix,Select,Client,Recv,我希望使用select在同一套接字描述符(服务器端)上的客户机/服务器上进行接收和发送 timestruct*myTime; sockfd=accept(listingfd,0,0); 而(1) FD_ZERO(&my_FD_set) maxFd=sockfd FD_ZERO(&my_FD_set); FD_集(sockfd和my_FD_集); 选择(maxFd+1,&my\u fd\u set,&my\u fd\u set,NULL,myTime); 对于(j=0;j为rfds和wfds参数使
timestruct*myTime;
sockfd=accept(listingfd,0,0);
而(1)
FD_ZERO(&my_FD_set)
maxFd=sockfd
FD_ZERO(&my_FD_set);
FD_集(sockfd和my_FD_集);
选择(maxFd+1,&my\u fd\u set,&my\u fd\u set,NULL,myTime);
对于(j=0;j为rfds
和wfds
参数使用不同的集合来选择,这样您就可以区分sockfd
何时在一个集合中,而不是在另一个集合中
fd_set rfds;
fd_set wfds;
FD_ZERO(&rfds);
FD_ZERO(&wfds);
FD_SET(sockfd, &rfds);
FD_SET(sockfd, &wfds);
if(select(sockfd + 1, &rfds, &wfds, NULL, myTime) < 0) {
perror("select");
return -1;
}
if(FD_ISSET(sockfd, &rfds))
recv();
if(FD_ISSET(sockfd, &wfds))
send();
fd\u设置rfds;
fd_集wfds;
FD_ZERO(和RFD);
FD_零(和wfds);
FD_集(sockfd和RFD);
FD_集(sockfd和wfds);
如果(选择(sockfd+1,&rfds,&wfds,NULL,myTime)<0){
佩罗(“选择”);
返回-1;
}
if(FD_ISSET(sockfd和RFD))
recv();
if(FD_ISSET(sockfd和wfds))
send();
Wow.谢谢,它现在可以用了!现在看起来很明显!除了这个,我什么都试过了/
fd_set rfds;
fd_set wfds;
FD_ZERO(&rfds);
FD_ZERO(&wfds);
FD_SET(sockfd, &rfds);
FD_SET(sockfd, &wfds);
if(select(sockfd + 1, &rfds, &wfds, NULL, myTime) < 0) {
perror("select");
return -1;
}
if(FD_ISSET(sockfd, &rfds))
recv();
if(FD_ISSET(sockfd, &wfds))
send();