Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Select()使用相同的套接字描述符发送和接收_C_Unix_Select_Client_Recv - Fatal编程技术网

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参数使

我希望使用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
参数使用不同的集合来
选择
,这样您就可以区分
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();