异步socket 如何确认连接

imchongde 2013-04-25 04:47:27
无论服务端是否打开,connect的结果都是10035。
网上查了下,需要其他机制来判断。
但我试了select(0,&fdRead,NULL,NULL,&aTime);和getsockopt(m_socket,SOL_SOCKET,SO_ERROR,aTest,&iLen)两种方法都是显示成功(服务器关闭/开启情况下)。
所以,特来求助。
这两个方法是否可行?是不是我用错了?
还有其他方法判断连接成功吗?
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
imchongde 2013-04-26
  • 打赏
  • 举报
回复
引用 5 楼 lostying 的回复:
[quote=引用 4 楼 yaozhiyong110 的回复:] 就是用select判断可写啊 可写了就是连上了呗
+1, 你判connect成功应该用select(0, NULL, &fdwrite, NULL, &tv);[/quote] 确实是这个原因 ,之前没想明白就用 ,见笑了。
无言猪 2013-04-26
  • 打赏
  • 举报
回复
引用 4 楼 yaozhiyong110 的回复:
就是用select判断可写啊 可写了就是连上了呗
+1, 你判connect成功应该用select(0, NULL, &fdwrite, NULL, &tv);
yaozhiyong110 2013-04-26
  • 打赏
  • 举报
回复
就是用select判断可写啊 可写了就是连上了呗
Luo_Bryant 2013-04-26
  • 打赏
  • 举报
回复
用重叠模型好处理。
  • 打赏
  • 举报
回复
超时就是连接失败啊。 求分啊, 我下载资源分不够。 我用异步socket连接主要是为了随时可以退出。还是另启动个线程进行connect然后马上进入等待函数,windows上的话可以用事件选择(我也不清楚是不是这个名字,百度这个函数WSAEventSelect( hSocket,hNetEvent,FD_CONNECT ) WSAWaitForMultipleEvents), 就算是在连接等待中,也可以SetEvent马上退出。
imchongde 2013-04-25
  • 打赏
  • 举报
回复
纠正一下,select的结果是 0 超时。

18,356

社区成员

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

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