超时connect
来源:互联网 发布:新西兰45秒彩开奖数据 编辑:程序博客网 时间:2024/04/29 23:59
sock选项SO_SNDTIMEO和SO_RCVTIMEO可以用来发送和接收超时时间,对于设置了以上选项的socket描述符,connect具有超时连接功能即在指定的时间内为连接会返回-1并置errno为EINPROGRESS
具有超时connect功能的客户端代码:
#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdlib.h>#include<assert.h>#include<errno.h>#include<stdio.h>#include<fcntl.h>#include<unistd.h>#include<string.h>#include<iostream>using namespace std;int timeout_connect(const char* ip,int port,int time){//超时connect int ret=0; struct sockaddr_in address; bzero(&address,sizeof(address)); address.sin_family=AF_INET; inet_pton(AF_INET,ip,&address.sin_addr); address.sin_port=htons(port); int sockfd=socket(PF_INET,SOCK_STREAM,0); assert(sockfd>=0); struct timeval timeout;//时间结构体 timeout.tv_sec=time; timeout.tv_usec=0; socklen_t len=sizeof(timeout); ret=setsockopt(sockfd,SOL_SOCKET,SO_SNDTIMEO,&timeout,len);//设置sockfd超时属性SO_SNDTIMEO assert(ret!=-1); ret=connect(sockfd,(struct sockaddr*)&address,sizeof(address)); if(ret==-1){ if(errno==EINPROGRESS){//EINPROGRESS错误才是超时 cout<<"connect timeout"<<endl;//这里定义超时逻辑 return -1; } cout<<"something wrong in connect"<<endl; return -1; } return sockfd;}int main(int argc,char* argv[]){ if(argc<=2){ cout<<"argc<=2"<<endl; return 1; } const char* ip=argv[1]; int port=atoi(argv[2]); int sockfd=timeout_connect(ip,port,5);//5s超时时间 if(sockfd<0){ return 1; } return 0;}
- connect 超时
- 超时connect
- connect超时 转
- connect函数超时设置
- 设置connect超时
- 设置connect超时时间
- connect的超时设置
- 设置connect超时时间
- 设置connect超时-linux
- socket 超时connect
- connect超时设置
- linux 设置connect 超时
- linux connect超时方法
- 设置connect超时
- connect 连接超时
- Socket编程之Connect超时
- 设置socket的Connect超时
- linux connect 设置连接超时
- memory pool 原理及使用
- html table td 边框效果
- Android Notification通知详解
- flash builder|adobe air支持iphone5,及上传到appstore时报Invalid Launch Image的问题
- 表空间使用率检查
- 超时connect
- ruby 有用的网址
- android 优秀资源地址
- Android 4.2蓝牙介绍
- Notification 短信通知
- select 查看socket 是否可读
- Linux下怎样查看机器配置,及cpu/内存/硬盘使用率
- COJ 1281qianshou的集合
- SPOJ 1811 Longest Common Substring SAM