如何判断异步connect连接成功?

bluecrest 2004-10-21 04:13:00
?
...全文
318 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
elssann 2004-10-21
  • 打赏
  • 举报
回复
请分清楚异步IO和非阻塞IO的区别。

异步IO是吧IO提交给系统去做,做完了通知你。
非阻塞IO是通过某种方法定时向系统查询是否可以做了,当可以做了系统就
告诉你,然后你再去做。
Jimmy_Xia 2004-10-21
  • 打赏
  • 举报
回复
网络编程及其弱,学习中!
醉马不肖 2004-10-21
  • 打赏
  • 举报
回复
if( (s=socket(AF_INET, SOCK_STREAM, 0))<0){
return FALSE;
}


fcntl(s,F_SETFL, O_NONBLOCK);

if(connect(s,(struct sockaddr*)&saddr, sizeof(saddr)) == -1) {
if (errno == EINPROGRESS){// it is in the connect process
struct timeval tv;
fd_set writefds;
tv.tv_sec = m_nTimeOut;
tv.tv_usec = 0;
FD_ZERO(&writefds);
FD_SET(s, &writefds);
if(select(s+1,NULL,&writefds,NULL,&tv)>0){
int len=sizeof(int);
//下面的一句一定要,主要针对防火墙
getsockopt(s, SOL_SOCKET, SO_ERROR, &error, &len);
if(error==0) ret=TRUE;
else ret=FALSE;
}else ret=FALSE;//timeout or error happen
}else ret=FALSE;
}
else ret=TRUE;

close(s);
alexmayer 2004-10-21
  • 打赏
  • 举报
回复
搬个凳子坐下听讲!

顺便帮顶混分!

18,356

社区成员

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

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