侦听套接字设为非阻塞,那么accept返回的套接字是阻塞的还是非阻塞的?

freegoal 2004-01-11 03:28:04

侦听套接字的阻塞/非阻塞 与 accept返回的套接字的阻塞/非阻塞 之间有什么关系和影响吗?

请指教
...全文
501 16 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
侦听非阻塞套接字返回的连接套接字好像还是阻塞的。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧