#include "winsock2.h" #pragma comment(lib,"WS2_32.lib") #include "stdio.h" int main(int argc, char* argv[]) { WSADATA wsaData; WORD sockVersion = MAKEWORD(2,0); WSAStartup(sockVersion, &wsaData); SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(s == INVALID_SOCKET) { return -1; } //设置非阻塞方式连接 unsigned long ul = 1; int ret = ioctlsocket(s, FIONBIO, (unsigned long*)&ul); if(ret == SOCKET_ERROR) return -1; sockaddr_in servAddr; servAddr.sin_family = AF_INET; servAddr.sin_port = htons(81); servAddr.sin_addr.S_un.S_addr = inet_addr("172.172.173.209"); connect(s,(sockaddr*)&servAddr,sizeof(servAddr)); //select 模型,即设置超时 fd_set r; FD_ZERO(&r); FD_SET(s, &r); struct timeval timeout ; timeout.tv_sec = 3; //连接超时3秒 timeout.tv_usec =0; ret = select(0, 0, &r, 0, &timeout); if(ret <= 0) { closesocket(s); return -1; } //设回阻塞模式 ret = ioctlsocket(s, FIONBIO, (unsigned long*)&ul); if(ret == SOCKET_ERROR){ closesocket(s); return -1; } //设置发送超时6秒 int TimeOut = 6000; if(setsockopt(s,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut)) == SOCKET_ERROR){ return 0; } //设置接收超时6秒 TimeOut = 6000; if(setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut)) == SOCKET_ERROR){ return 0; } WSACleanup(); return 0; }
winsock 连接超时时间设置
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
十分钟时间搞懂怎么用JS代码渲染实时时间
十分钟时间搞懂怎么用JS代码渲染实时时间
数据 数组 时间对象 -
mysql不设置超时时间 mysql语句超时时间设置
要时刻对线上系统保持敬畏之心,那么线上系统的JVM参数配置,数据库连接配置就得认真对待,不能疏忽 1. 常见问题 线上系统的数据库配置的参数的具体含义,以及该设置多大 线上系统对应的数据库最大支持的链接数是多少,通过压测能压到2000,还是5000 还是多少 apache的数据库连接池和阿里的DruidD
mysql不设置超时时间 BasicDataSource 数据库连接池 连接池 mysql