這裏是tcp和udp echoclient服務器的代碼片段使用select.i已經完成與民意測驗和 得到了很好的清晰度,但是當來選擇它已經在書中描述,即在下面的代碼我們應該採取的片段(maxpl + 2)我沒有得到它,首先我們爲什麼要採取最大值(tcp_sfd,udp_sfd)?tcp和udp echoclient服務器使用選擇
fd_set fdvar;
FD_ZERO(&fdvar);
FD_SET(tcp_sfd,&fdvar);
FD_SET(udp_sfd,&fdvar);
int maxpl = max(tcp_sfd,udp_sfd);
cout << "Waiting for a client...\n";
if(select(maxpl+2 ,&fdvar,NULL,NULL,NULL)==-1)
{
perror("error in select");
}
if(FD_ISSET(udp_sfd,&fdvar))
{
// UDP
}
else
{
//TCP
}
你能澄清一下:問題到底是什麼?如果(select(maxpl + 2,&fdvar,NULL,NULL,NULL)== -1) – cnicutar 2013-03-03 11:39:53
perror(「error in select」); }在選擇語句爲什麼他正在(maxpl + 2)和代碼片段爲什麼它是最大(tcpsocketsfd,udpsocketsfd)? – 2013-03-03 11:43:56
你可以發佈完整的代碼而不是代碼片段嗎? – Pradheep 2013-03-03 11:47:14