这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教大虾如何用select来实现对两个socket的操作

共5条 1/1 1 跳转至

请教大虾如何用select来实现对两个socket的操作

菜鸟
2006-03-16 03:18:34     打赏

我用下面的代码,只能收到fds[0]的数据,为什么呀,第一次用select,大虾给指点一下吧!

int fds[2];/*生成两个socket*/
...
FD_ZERO (&readFds);
for (i=0; i<2; i++)
{
FD_SET (fds[i], &readFds);
width = (fds[i] > width) ? fds[i] : width;
}
width++;
FOREVER
{
if (select(width, &readFds,NULL,NULL,NULL) == ERROR)
{
printErr ("wdbUdpSockLib: select failed!\n");
return (0);
}
for (i=0; i<2; i++)
{
if (FD_ISSET (fds[i], &readFds))
{
if(recvfrom(fds[i],(char *)&clientRequest,sizeof(clientRequest),0,(struct sockaddr *)&clientAddr,&sockAddrSize) == ERROR)
{
perror("bind");
close(fds[i]);
return(ERROR);
}
sprintf(sRecv,"%s%d ",sRecv,clientRequest[0]);
printf("%s\n",sRecv);
}
}
}




关键词: 请教     大虾     何用     select     实现     两个     soc    

菜鸟
2006-03-20 01:10:00     打赏
2楼

大侠们帮帮忙啊,先谢过了!


菜鸟
2006-03-26 01:12:00     打赏
3楼
哪位大侠帮忙看看吧,我第一次用select,实在不知道错在那里了?

菜鸟
2007-07-22 00:46:00     打赏
4楼

问题是否解决,我也碰到这个问题解决不了,请做过的大侠出来指点一下


菜鸟
2007-07-22 03:31:00     打赏
5楼

已搞定,将

FD_ZERO (&readFds);
for (i=0; i<2; i++)
{
FD_SET (fds[i], &readFds);
width = (fds[i] > width) ? fds[i] : width;
}
width++;
放在循环内即可。


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]