[linux] 将socket设置为非阻塞(non-blocking)
2013-01-09 01:29
459 查看
[linux] 将socket设置为非阻塞(non-blocking) - 王绍全的博客 - 博客频道 - CSDN.NET
u_long has = 1;
ioctl(m_sock, FIONBIO , &has);
这个函数会非常无耻的返回你success,但是它实际上很可能什么也没做。
正确的做法应该是使用fcntl:
int flags = fcntl(m_sock, F_GETFL, 0);
fcntl(m_sock, F_SETFL, flags|O_NONBLOCK);
这真是一个隐蔽的问题,折腾了我两天。线程每每停留在send()调用那里,我始终没怀疑到:用ioctl设置FIONBIO成功之后,socket竟然还是阻塞的。
[linux] 将socket设置为非阻塞(non-blocking)
2006-07-24 19:06 8495人阅读 评论(9) 收藏 举报有一个非常有迷惑性的做法是:u_long has = 1;
ioctl(m_sock, FIONBIO , &has);
这个函数会非常无耻的返回你success,但是它实际上很可能什么也没做。
正确的做法应该是使用fcntl:
int flags = fcntl(m_sock, F_GETFL, 0);
fcntl(m_sock, F_SETFL, flags|O_NONBLOCK);
这真是一个隐蔽的问题,折腾了我两天。线程每每停留在send()调用那里,我始终没怀疑到:用ioctl设置FIONBIO成功之后,socket竟然还是阻塞的。
相关文章推荐
- [linux] 将socket设置为非阻塞(non-blocking)
- [linux] 将socket设置为非阻塞(non-blocking)
- [linux] 将socket设置为非阻塞(non-blocking)
- 将socket设置为非阻塞(non-blocking)(
- 将socket设置为非阻塞(non-blocking) - 艾子的日志 - 网易博客
- unix/linux socket设置非阻塞
- C/C++网络编程在windows和linux中将socket设置为阻塞和非阻塞
- Linux下socket设置为非阻塞方式和fcntl系统调用
- [置顶] C/C++网络编程在windows和linux中将socket设置为阻塞和非阻塞
- 如何设置linux socket为非阻塞
- C++编程:socket设置为非阻塞方式(windows和linux)1
- linux网络编程:设置非阻塞socket收发数据
- Linux下socket设置为非阻塞方式和fcntl系统调用
- linux下将socket设置为非阻塞的方法
- socket设置为非阻塞方式(windows和linux)
- unix/linux socket设置非阻塞
- Linux下socket设置为非阻塞方式和fcntl系统调用
- unix/linux socket设置非阻塞io
- linux网络编程:设置非阻塞socket收发数据
- Linux下socket设置为非阻塞方式和fcntl系统调用