C connect实现Timeout效果(Windows)
2024-10-18 22:29:18
int SocketClient::connectTimeOutForWin(SOCKET &connect_fd, const int &timeout, const sockaddr_in &server)
{
int error=-, len;
len = sizeof(int);
timeval tm;
fd_set set;
unsigned long ul = ; //设置为非阻塞模式 ioctlsocket(connect_fd,FIONBIO,&ul); bool ret = false;
if( connect(connect_fd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -)
{
tm.tv_sec = timeout;
tm.tv_usec = ;
FD_ZERO(&set);
FD_SET(connect_fd, &set);
if( select(-, NULL, &set, NULL, &tm) > )
{ getsockopt(connect_fd, SOL_SOCKET, SO_ERROR, (char*)&error, &len); if(error == ) ret = true;
else ret = false;
} else ret = false;
}
else ret = true;
ul = ; //设置为阻塞模式
ioctlsocket(connect_fd,FIONBIO,&ul); if(!ret){
closesocket(connect_fd);
// fprintf(stderr,"Connect server fail in WIN\n");
}
return ret;
}
windows网络编程之socket中的非阻塞connect()与getsockopt()
最新文章
- An error occurred during the installation of assembly 'Microsoft.VC90.CRT……的问题
- CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法
- 备忘:hibernate, logback, slf4j实际应用一例
- Gson心得小笔记
- for (Map.Entry<;Long, Integer>; me : zlSendMap.entrySet())
- Java-马士兵设计模式学习笔记-责任链模式-FilterChain功能
- 用html5的canvas生成图片并保存到本地
- qt button以及label实现不规则图形(五种方法:使用QSS,设置Mask图片,自己画)
- js实现Mac触摸板双指事件(上、下、左、右、放大、缩小)
- 7、树莓派编程;gpio编程;led闪烁
- crontab 任务程序执行乱码的问题
- ROS入门学习
- 雷林鹏分享:jQuery EasyUI 数据网格 - 创建自定义视图
- Eureka服务注册中心相关错误com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
- [daily][dpdk] 网卡offload识别包类型;如何模拟环境构造一个vlan包
- Java中this和super的用法和区别
- linux命令学习之:ifconfig
- Eclipse,代码中有错误,项目中却不显示红叉
- 课堂final发布
- PHPCMS 栏目添加字段和修改描述textarea变成fceditor编辑器