社区
VxWorks
帖子详情
请问在VX WORKS 下iosIoctl将套接字设置成非阻塞它的参数是怎么弄的哦。
abzhang2
2008-03-04 09:58:39
请问在VX WORKS 下iosIoctl将套接字设置成非阻塞它的参数是怎么弄的哦。
...全文
114
8
打赏
收藏
请问在VX WORKS 下iosIoctl将套接字设置成非阻塞它的参数是怎么弄的哦。
请问在VX WORKS 下iosIoctl将套接字设置成非阻塞它的参数是怎么弄的哦。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
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
打赏
举报
回复
进来学习
相关推荐
Linux
非阻塞
套接字
client
linux系统下的
非阻塞
套接字
编程的客户端实现
Windows CE下的
非阻塞
套接字
编程
我们知道Windows CE不支持PC版Windows可用的WSAAsync异步调用,不过我们仍然可以将
套接字
从默认的阻塞模式转换到
非阻塞
模式.在
非阻塞
模式下,所有可能需要等待成功执行其功能的
套接字
调用都会立刻返回WSAEWOULDBLOCK错误代码.接着我们可以在此后再次调用阻塞的函数来完成任务. 可以使用
ioctl
socket函数将
套接字
设置成
非阻塞
模式.BOOL fBlocki
网络通信与reactor原理总结
网络编程基本流程图如下: 在网络通信中io会有阻塞和
非阻塞
形式,阻塞一般出现在网络线程中,可以通过fcntl将网络
套接字
设置成
非阻塞
模式,默认创建的
套接字
为阻塞模式 如果
套接字
设置成
非阻塞
模式,在解析力啊read write就会表现出
非阻塞
模式
非阻塞
和阻塞io主要差异,在数据未到达时,
非阻塞
体现在当有数据是立刻返回,反之阻塞 具体如下图所示: 阻塞io模型+多线程方式: 每一个线程处理一个fd连接 优势:处理及时; 缺陷:线程利用率低,线程的数量有限的 io多路复用(网络线程)
select与阻塞和
非阻塞
select与阻塞和
非阻塞
这2天一直和同事在讨论socket的
非阻塞
用在什么场合,并且认为在select时,使用的socket要
设置成
阻塞的,今天在网上搜了一下,才发现,原来,我们搞错了,一个
套接字
阻塞或者不阻塞,select就在那里,它可以针对这2种
套接字
使用,对任何一种
套接字
的轮询检测,超时时间都是有效的,区别就在于: 当select完毕,认为该
套接字
可读时, 1 .阻塞的
套接字
,会让read阻塞,直到读到所需要的所有字节; 2 .
非阻塞
的
套接字
,会让read读完fd中的数据后就返回,但如果原
设置
非阻塞
的
套接字
Socket
当使用socket()函数和WSASocket()函数创建
套接字
时,默认都是阻塞的。在创建
套接字
之后,通过调用
ioctl
socket()函数,将该
套接字
设置为
非阻塞
模式。函数的第一个
参数
是
套接字
,第二个
参数
设置为FIONBIO,第三个
参数
设置为unsigned long类型的非零值。下面代码清单演示了如何用
ioctl
socket()函数,设置
套接字
为
非阻塞
模式。 SOCKET...
发帖
VxWorks
VxWorks
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
复制链接
扫一扫
2157
社区成员
2917
社区内容
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2008-03-04 09:58
社区公告
暂无公告