关于AsyncSelect的触发事件问题

buleideli 2008-08-20 11:50:50
使用AsyncSelect编写C/S程序。

C中,WSAAsyncSelect设置FD_WRITE,FD_CONNECT;S中,设置FD_WRITE,FD_ACCEPT.在建立连接时,C中触发了FD_CONNECT,FD_WRITE;S中触发了FD_ACCEPT,FD_WRITE,同时有WSAEWOULDBLOCK.根据MSDN中对这FD_WRITE,FD_ACCEPT,FD_CONNECT的解释,是否可以这么认为:
建立连接时,触发FD_CONNECT不代表连接建立,而FD_ACCEPT,FD_WRITE则可以。

同时,在receive时,总是有WSAEWOULDBLOCK,但是触发了FD_READ,接收数据成功。是否可这么认为:
AsyncSelect中默认为非阻塞模式,调用recv()都会有WSAEWOULDBLOCK,只要有触发FD_READ则接收成功,不用管WSAEWOULDBLOCK。

/////////////////////////////////////////////////////////////////////////////////////
...全文
83 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
buleideli 2008-08-21
  • 打赏
  • 举报
回复
DING
paerxiushi 2008-08-21
  • 打赏
  • 举报
回复
触发FD_CONNECT应该就是连接建立了,
recv()会返回WSAEWOULDBLOCK,你是不是使用过setsockopt,设置了非阻塞模式,而recv操作却是阻塞的.

18,356

社区成员

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

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