哪位Windows高手知道有没有办法知道socket当前是工作在阻塞模式还是非阻塞模式? 哪位Windows高手知道有没有办法知道socket当前是工作在阻塞模式还是非阻塞模式?吐血给分!加请喝咖啡!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 执行任何程序,看socket状态(停止或运行),前者为非阻塞,否则为阻塞 能说详细点吗?偶把具体问题描述一下:recv返回-1,错误为WSAEWOULDBLOCK,但socket是用socket()建的,没有用ioctlsocket设为非阻塞啊,为什么不阻塞接收呢?这个问题有点类似前面yuanrichard大侠的帖子“CSocket的Receive()函数怎么不阻塞啊”。 设置阻塞需要用WSAAsyncSelect函数。如果取消只需将此函数的后两个参数设为0即可。 没有用WSAAsyncSelect啊。主函数调用ioctlsocket(s,FIONBIO,&ul)就成功(ul=0),子函数就失败。 刚才说的有点不对。下面的建议紧供参考。而如果您想将某一个 socket 的 async 事件通知设定取消的话,那麽同样也是用 WSAAsyncSelect 这个函式;且第四个参数 lEvent 一定要设为 0。WSAAsyncSelect( s, hWnd, 0, 0 ) -- 取消所有 async 事件设定在这里笔者还要告诉各位一点,呼叫 WSAAsyncSelect 的同时也将此一 socket改变成「非阻拦」(non-blocking)模式。但是此时这个 socket 不能很简单地用ioctlsocket() 这个函式就将它再变回「阻拦」(blocking)模式。也就是说WSAAsyncSelect 和 ioctlsocket 所改变的「非阻拦」模式仍是有些不同的。如果您想将一个「非同步」(asynchronous)模式的 socket 再变回「阻拦」模式的话,必须先呼叫 WSAAsyncSelect() 将所有的 async 事件取消,再用 ioctlsocket() 将它变回阻拦模式。 我知道。但问题是我没有调用过WSAAsyncSelect或WSAEventSelect,socket为什么会工作在非阻塞模式,有其它的原因吗? 如何彻底摆脱拆分窗口的时,工具栏按钮及菜单项随窗口脱节的现象。 大家好 我请教一个网络读取图片的问题 请教:activex控件只能在开发环境所在的机器上运行 关于socket中的listen函数问题 新人的第一个VC程序,按教材打的,出错了 <<VISUAL C++MFC编程实例>>的源代码 [email protected] 为什么我的程序网络通信比本机通信慢4~5倍(急) 送分!谁有有关光盘刻录的源程序,如果没有,说说刻录原理也行! 关于格式化字符串 ATL 创建的 COM 内部每对象怎么调用和传出? 这个死循环如何解决呀 如何在FormView中显示汉字
偶把具体问题描述一下:recv返回-1,错误为WSAEWOULDBLOCK,但socket是用socket()建的,没有用ioctlsocket设为非阻塞啊,为什么不阻塞接收呢?
这个问题有点类似前面yuanrichard大侠的帖子“CSocket的Receive()函数怎么不阻塞啊”。
主函数调用ioctlsocket(s,FIONBIO,&ul)就成功(ul=0),子函数就失败。
下面的建议紧供参考。
而如果您想将某一个 socket 的 async 事件通知设定取消的话,那麽同样也是用 WSAAsyncSelect 这个函式;且第四个参数 lEvent 一定要设为 0。WSAAsyncSelect( s, hWnd, 0, 0 ) -- 取消所有 async 事件设定在这里笔者还要告诉各位一点,呼叫 WSAAsyncSelect 的同时也将此一 socket改变成「非阻拦」(non-blocking)模式。但是此时这个 socket 不能很简单地用ioctlsocket() 这个函式就将它再变回「阻拦」(blocking)模式。也就是说WSAAsyncSelect 和 ioctlsocket 所改变的「非阻拦」模式仍是有些不同的。如果您想将一个「非同步」(asynchronous)模式的 socket 再变回「阻拦」模式的话,必须先呼叫 WSAAsyncSelect() 将所有的 async 事件取消,再用 ioctlsocket() 将它变回阻拦模式。
但问题是我没有调用过WSAAsyncSelect或WSAEventSelect,socket为什么会工作在非阻塞模式,有其它的原因吗?