如何判断异步connect连接成功? ? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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); 请分清楚异步IO和非阻塞IO的区别。异步IO是吧IO提交给系统去做,做完了通知你。非阻塞IO是通过某种方法定时向系统查询是否可以做了,当可以做了系统就告诉你,然后你再去做。 如何用vc,把*.doc文档转换成*.htm文件 急!!! 点击TreeCtrl时,怎样得到点击的是第几项? ADO Data Control,DataCombo,DataGrid控件如何在没有安装vc 环境下运行 请问,想查一个客户端程序,向服务器发送了什么数据包,怎么查啊 快疯了.2019错误...请大家看仔细.. 串口工作有误了,MSComm32控件的问题?? 一个visual c++初学者的问题 (急!!)一个结束进程的问题 我认为很难的问题! 哪位大虾能告诉我怎样清空控件中的内容? GetFileSize()具体使用方法。 怎样把数字字符穿CString 转换成整形的??
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);
非阻塞IO是通过某种方法定时向系统查询是否可以做了,当可以做了系统就
告诉你,然后你再去做。