4084|8

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

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

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

最新回复

vxworks中socket是支持非阻塞方式的,可以通过ioctl或者setsockopt来实现  详情 回复 发表于 2008-3-8 16:18
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
进来学习
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
  1. int flag = 1;
  2. iosIoctl(sockfd, FIONBIO, &flag);
复制代码
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
上面错了,应该是ioctl(sockfd, FIONBIO, &flag)
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢楼上的。
我设置成非阻塞后。 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(...)
}
 
 
 

回复

45

帖子

0

TA的资源

禁止发言

6
 
已经用了select为什么还要设成非阻塞?select本身就设置了timeout超时时间,设短点不就不阻塞了?

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

nret = select(sock_udp_recv + 1, &fd_read, 0, 0, &timeout_recv);
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
用setsockopt
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
VxWorks的SOCKER支持非阻塞式的操作吗?我印象中是不支持的。而且,我觉得你用select,要非阻塞干什么?不是这种模式的
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
vxworks中socket是支持非阻塞方式的,可以通过ioctl或者setsockopt来实现
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表