社区
Linux/Unix社区
帖子详情
为什么要不套接字设置成为非阻塞模式
wangzhaoyang121
2013-03-21 11:46:02
为什么要把套接字设置为非阻塞模式?
与阻塞模式比较,非阻塞模式有什么优势?
什么情况下用非阻塞模式?
套接字设置非阻塞方法:
一种是:通过fcntl(fd, F_SETFL, NOBLOCK)加select;
第二种:直接是select();
请各个大侠指教!!!
...全文
315
7
打赏
收藏
为什么要不套接字设置成为非阻塞模式
为什么要把套接字设置为非阻塞模式? 与阻塞模式比较,非阻塞模式有什么优势? 什么情况下用非阻塞模式? 套接字设置非阻塞方法: 一种是:通过fcntl(fd, F_SETFL, NOBLOCK)加select; 第二种:直接是select(); 请各个大侠指教!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Roxxette
2013-03-23
打赏
举报
回复
实际应用中主要是对套接字读写添加超时控制
zz_d
2013-03-22
打赏
举报
回复
当你需要读取套接字立即返回, 设置成非阻塞. 当你一定要读到数据, 设置成阻塞.
nostopstep
2013-03-22
打赏
举报
回复
这个问题其实问的很不错,未解决这样的问题,正像二楼所说,要说清楚,得一大堆,因此,你可以看一下5中IO模式,完成端口作为重点查看。高性能服务器的网络通信都是用非阻塞模式。这里面涉及到的东西也很多。涵盖了多线程、线程池、线程同步和数据互斥等。正式网络传输的精华所在。
恨天低
2013-03-21
打赏
举报
回复
要解释得说一堆的话。 《Unix网络编程》第一卷,第六章,IO复用。自己去看一遍。
skyandcode
2013-03-21
打赏
举报
回复
阻塞程序就停止在那里了当然不好啊,非阻塞可以可以马上返回做别的事。 select方法效率太低了,要一直去监视有没有事件到来很耗时间。 其它方法很多,最有效的是完成端口模型。我的博客有简单的介绍可以看看。
youngwolf
2013-03-21
打赏
举报
回复
select与阻不阻塞没有关系,它不会修改套接字的属性的; 在阻塞状态下,某些时候,用select poll epoll仍然不能解决阻塞的问题,此时就需要设置为非阻塞,比如: 你要写的时候,select告诉你可写,但由于你写得太多,所以仍然可能阻塞; 你用epoll在ET模式下时,必须设置为非阻塞,因为你要读取完所有的数据,epoll_wait才会再次触发,此时一般用非阻塞模式,一直读到出错为止。 当然,似乎是有些函数,可以知道某个套接字现在读写缓存里面有多少数据,有多大的剩余,但我从来没用过,这显然会损失效率的。
Carl_CCC
2013-03-21
打赏
举报
回复
第六章只讲了区别,看16章,非阻塞可以减少壁钟问题,书上说的,貌似很少用。
基于Windows
套接字
的网络编程(MFC)
从CSocket编程模型知道,服务器端需要两种
套接字
,一个用来侦听连接请求,一个用来与请求连接的
套接字
建立连接。因此,利用类向导为程序添加两个CSocket和。下面在
套接字
类里加入对话框类信息。1然后在两个
套接字
类...
Windows Socket
套接字
(一)
MSDN:socket function ...阻塞
模式
(默认)和
非阻塞
模式
ioctlsocket函数可
设置
二.
套接字
函数 1.WSAStartup WSAStartup函数用于初始化wa2_32.dll动态链接库。 int WSAStartup(WORD wVersionReques
C++网络编程 TCP
套接字
基础知识,利用TCP
套接字
实现客户端-服务端通信
流式
套接字
编程针对TCP协议通信,即是面向对象的通信,分为服务端和客户端两部分。
Windows Socket
套接字
:MFC
套接字
编程
nSocketPort:
套接字
端口,如果为0,系统自动选择一个端口 nSocketType:
套接字
类型,如果为SOCK_STREAM=流式
套接字
,SOCK_DGRAM=数据报
套接字
IEvent:
套接字
能够处理的网络事件 FD_READ:当
套接字
中有数据需要读取时...
Windows Socket
套接字
(三)-MFC
套接字
编程
该方法用于判断
套接字
是否处于阻塞
模式
BOOL lsBlocking(); 返回值:0=
非阻塞
,非0=则塞 5.CancelBlockingCall 该方法用于取消
套接字
的阻塞
模式
void CancelBlockingCall(); 三、客户端实现...
Linux/Unix社区
23,125
社区成员
74,509
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章