#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; }