社区
Linux/Unix社区
帖子详情
侦听套接字设为非阻塞,那么accept返回的套接字是阻塞的还是非阻塞的?
freegoal
2004-01-11 03:28:04
侦听套接字的阻塞/非阻塞 与 accept返回的套接字的阻塞/非阻塞 之间有什么关系和影响吗?
请指教
...全文
501
16
打赏
收藏
侦听套接字设为非阻塞,那么accept返回的套接字是阻塞的还是非阻塞的?
侦听套接字的阻塞/非阻塞 与 accept返回的套接字的阻塞/非阻塞 之间有什么关系和影响吗? 请指教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rexp
2004-01-15
打赏
举报
回复
我认为是阻塞式的
catyou
2004-01-13
打赏
举报
回复
listen的应该是阻塞的,至于返回的也应该是阻塞的,如果要用到非阻塞,就需要设置。
fierygnu
2004-01-13
打赏
举报
回复
Windows比较复杂,看http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/ioctlsocket_2.asp
Linux上用fcntl设置。
SyDes21
2004-01-13
打赏
举报
回复
等待其他人回答.
SyDes21
2004-01-13
打赏
举报
回复
....... // 将侦听套接字设为非阻塞模式
clisock = accept(servsock, NULL, NULL);
if (clisock == INVALID_SOCKET)
{
// 相关处理
}
flag = 0;
ioctlsocket(clisock, FIONBIO, &flag);
上面代码应该把clisock设为阻塞模式的, 可实际上clisock还是非阻塞的.
joachern
2004-01-13
打赏
举报
回复
gz
xsinuz
2004-01-13
打赏
举报
回复
使用select,在监听的句柄中加入accept的端口,如果返回的句柄集有它,就表示有一个客户被accept了,这样就可以方便非阻塞,大概是这个样子。
freegoal
2004-01-13
打赏
举报
回复
那accept返回的cli_fd能够再设置成阻塞的吗?
freegoal
2004-01-12
打赏
举报
回复
那到底是什么样子的呢?
侦听套接字设为非阻塞,accept返回的套接字是阻塞的还是非阻塞的?谁能给个准确的说法?
SyDes21
2004-01-12
打赏
举报
回复
上面说错了, cli_fd 是非阻塞的. 不好意思.
SyDes21
2004-01-12
打赏
举报
回复
listen_fd设为非阻塞, accept返回的cli_fd还是处于阻塞的. 想提高效率可以用select多路I/O复用. 让套接字主动地向系统发出监听某套接字的连接或通信套字的收发数据的网络事件.
Hmilzy
2004-01-12
打赏
举报
回复
如果侦听套接字是非阻塞的,那么ACCEPT返回的就是非阻塞的。
fierygnu
2004-01-11
打赏
举报
回复
一样。
shuneng
2004-01-11
打赏
举报
回复
侦听的SOCKET与ACCEPT返回的SOCKET是两个不同的SOCKET。
不会影响。
Hmilzy
2004-01-11
打赏
举报
回复
侦听和ACCEPT套接字属性是一样的,这在定义套接字的时候已经确定了吧
zleoz
2004-01-11
打赏
举报
回复
侦听非阻塞套接字返回的连接套接字好像还是阻塞的。
csdesign:Python并发服务器设计的简单例子
Python并发服务器设计的简单例子 可用于所有服务器。 TCP 并发服务器,每个客户端一个孩子(fork) TCP 并发服务器,I/O 多路复用(选择) TCP 预分叉服务器,儿童呼叫“接受” 服务器为每个客户端连接调用“fork”可能会占用大量资源。 一种可能的解决方案是在服务器启动时预分叉一些子进程并使用预分叉进程池来处理传入连接。 从某种意义上说,这种设计有点不寻常,它不是服务器调用“
accept
”来接受新连接,而是所有子进程都在从父进程传递的同一个
侦听
套接字
上调用“
accept
”时被
阻塞
。 它的工作方式是所有子进程都被
阻塞
,等待同一个
侦听
套接字
上的事件。 当一个新的连接到达时,所有的孩子都被唤醒。 要运行的第一个子进程将调用“
accept
” ,其余进程将在同一个调用中进入睡眠状态。 冲洗重复。 这种行为被称为 要查看到孩子的连接分布(即每个孩子成功调用“接受”并获得新
由VC++ CS结构实现的信息转发服务器
摘要:VC/C++源码,界面编程,Socket 由VC++ CS结构实现的信息转发服务器,创建监听
套接字
,激发FD_
ACCEPT
事件,默认端口5088,"
侦听
"成功,等待连接请求,
侦听
到连接请求,调用
Accept
函数,接受连接,触发通信Socket的Read函数读数据,记录当前通信Socket,判断线程
阻塞
等。 运行环境:Windows/Visual C/C++
java
accept
是否
阻塞
_
阻塞
,
非
阻塞
connect()和
accept
()
非
阻塞
connect()和
accept
()一.select()函数select()函数准备好读的条件:1>.套接口有数据可读2>.该连接的读这一半关闭(也就是接收了FIN的TCP连接)。对这样的套接口进行读操作将不
阻塞
并
返回
0(也就是
返回
EOF)。3>.该套接口是一个
侦听
套接口且已完成的连接数不为0。4>.其上有一个套接口错误待处理,对这样的套接口的读操作将不
阻塞
并
返回
-1...
python 不一样的
非
阻塞
套接字
与IO多路复用
python 不一样的
非
阻塞
套接字
与IO多路复用
socket通信 listen和
accept
监听
阻塞
?
listen只是把
套接字
从主动变为被动,并限制链接数;剩下的问题就是
accept
的,它会检测的; listen意思是监听:但是它不是一直在监听,
accept
才是; 理解:listen函数不会
阻塞
,它只是相当于把socket的属性更改为被动连接,可以接收其他进程的连接。listen
侦听
的过程并不是一直
阻塞
,直到有客户端请求连接才会
返回
,它只是设置好socket的属性之后就会
返回
。监听的过程实质由操作系统完成。但是
accept
会
阻塞
(也可以设置为
非
阻塞
),如果listen的
套接字
对应的连接请求队列为空(没有客户
Linux/Unix社区
23,120
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章