请问在VX WORKS 下iosIoctl将套接字设置成非阻塞它的参数是怎么弄的哦。

abzhang2 2008-03-04 09:58:39
请问在VX WORKS 下iosIoctl将套接字设置成非阻塞它的参数是怎么弄的哦。
...全文
194 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
frank_zhou 2008-03-08
  • 打赏
  • 举报
回复
vxworks中socket是支持非阻塞方式的,可以通过ioctl或者setsockopt来实现
xues 2008-03-07
  • 打赏
  • 举报
回复
VxWorks的SOCKER支持非阻塞式的操作吗?我印象中是不支持的。而且,我觉得你用select,要非阻塞干什么?不是这种模式的
abzhang2 2008-03-05
  • 打赏
  • 举报
回复
谢谢楼上的。
我设置成非阻塞后。 FD_ISSET()总是返回非0
/*create socket*/
UDPCreate_Recv();
ioctl(sock_udp_recv, FIONBIO, &ul)
bind(sock_udp_recv, (struct sockaddr_in*)&addr_udp_recv, sizeof(addr_udp_recv));
while(1)
{
FD_ZERO(&fd_read);
FD_SET(sock_udp_recv, &fd_read);
timeout_recv.tv_sec = 1;
timeout_recv.tv_usec = 1;
nret = select(0, &fd_read, 0, 0, &timeout_recv);

/*问下,这里总是返回为非0*/
nret = FD_ISSET(sock_udp_recv, &fd_read); if(!nret)
{
continue;
}
recvfrom(...)
}
frank_zhou 2008-03-05
  • 打赏
  • 举报
回复
用setsockopt
hzcpig 2008-03-05
  • 打赏
  • 举报
回复
已经用了select为什么还要设成非阻塞?select本身就设置了timeout超时时间,设短点不就不阻塞了?

另外,你select的第一个参数好像错了,印象中应该

nret = select(sock_udp_recv + 1, &fd_read, 0, 0, &timeout_recv);
hzcpig 2008-03-04
  • 打赏
  • 举报
回复
上面错了,应该是ioctl(sockfd, FIONBIO, &flag)
hzcpig 2008-03-04
  • 打赏
  • 举报
回复
int flag = 1; 
iosIoctl(sockfd, FIONBIO, &flag);
kbryant 2008-03-04
  • 打赏
  • 举报
回复
进来学习

2,180

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧