怎样把non-blocking的SOCKET设置成为blocking的SOCKET

fengchang 2004-12-21 07:32:43
我的程序运行于客户端,有一个CAsyncSocket类(实际上是它的派生类)的对象,在这个类对象连接上服务器后,我调用

//设置SOCKET至阻塞状态;
m_pToGISSocket->AsyncSelect(0);
DWORD dwArgument = 0;
VERIFY(m_pToGISSocket->IOCtl(FIONBIO,&dwArgument));
我企图把它设置为阻塞的模式,然后把SOCKET的套接字句柄传给线程,在线程中完成报文的收发,但是我惊奇的发现在我调用套接字的接受函数的时候,有时居然返回
WSAEWOULDBLOCK,也就是说该套接字还是非阻塞的模式,请指点一二我调用的函数过程有误吗?应该怎么才能把非阻塞的套接字该设成阻塞的模式呢?谢谢回复。
...全文
172 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengchang 2004-12-22
  • 打赏
  • 举报
回复
我不是已经调用AsyncSelect(0)了吗?可是它还是non-blocking,也就是说在接受的时候返回WSAEWOULDBLOCK错误。
kingzai 2004-12-21
  • 打赏
  • 举报
回复
可以用IOCtl设置为阻塞模式,调用前有一点一定要注意,一定要先调用AsyncSelect(0),
HunterForPig 2004-12-21
  • 打赏
  • 举报
回复
用socket api
ioctlsocket(csocket对象的句柄, FIONBIO, 0);
fengchang 2004-12-21
  • 打赏
  • 举报
回复
up一下,真的很着急。
SatanLi1982 2004-12-21
  • 打赏
  • 举报
回复
只知道API的做法^_^
ioctlsocket(sock, FIONBIO, 0);

18,356

社区成员

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

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