如何将非阻塞模式 改为阻塞模式?

chmdcr 2010-08-22 10:56:04
写程序测试ioctlsocket函数 当由阻塞设置为非阻塞时效果很明显 但再用这个函数将非阻塞设置为阻塞时 貌似没什么用
表现为我用connect连接一个不存在的IP 阻塞模式下 会阻塞20秒左右 非阻塞 当然是立即返回了
我先再阻塞模式下调用connect 阻塞20秒
将模式改为非阻塞
然后connet程序 程序立即返回
再将模式改回阻塞 再调用connect 函数仍然是立即返回 这是不是可以说明并没有改回到阻塞 模式?

看了MSDN 说程序中使用 WSAEventSelect 和 WSAAsyncSelect 后再用ioctlsocket将非阻塞改为阻塞是不能成功的。但我的程序里没有使用这两个函数


另外 如何确定当前模式是阻塞 还是非阻塞呢
...全文
180 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chmdcr 2010-09-07
  • 打赏
  • 举报
回复
自己顶一下
chmdcr 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dingshaofengbinbin 的回复:]
GetSockOpt()函数可以获得相关信息把!!!!
[/Quote]
没找到相关 的参数 可以返回该状态
dingshaofengbinbin 2010-09-01
  • 打赏
  • 举报
回复
GetSockOpt()函数可以获得相关信息把!!!!
chmdcr 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bragi523 的回复:]
你用非阻塞又不用select?那怎么接收返回

现在它立刻返回时因为当前句柄还在异步中,未返回
[/Quote]

我现在想要做的就是 把当前的非阻塞模式 改回到阻塞模式 并确定一下 该为阻塞模式已经成功了 但现象却不能让我确定
chmdcr 2010-09-01
  • 打赏
  • 举报
回复
函数调用成功了 但是现象貌似是没成功的
Eleven 2010-08-31
  • 打赏
  • 举报
回复
ioctlsocket()将非阻塞模式改成阻塞模式的时候,函数调用成功了没?
bragi523 2010-08-31
  • 打赏
  • 举报
回复
你用非阻塞又不用select?那怎么接收返回

现在它立刻返回时因为当前句柄还在异步中,未返回
chmdcr 2010-08-31
  • 打赏
  • 举报
回复
第二个问题 就是为了检验我在设置状态时是否设置成功了
dickbarry 2010-08-23
  • 打赏
  • 举报
回复
第一个问题,无码无真相,贴出来代码看看

第二个问题,你自己的写的代码难道不知道是不是阻塞的么?如果不知道,可以跟踪一下,或者判断设置模式函数的返回值,看函数是否执行成功

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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