Linux
int fd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
// 将 fd 设置成非阻塞
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL)| O_NONBLOCK);
connect(...);
Windows
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
// 将 sock 设置成非阻塞
unsigned long mode = 1;
ioctlsocket(sock, FIONBIO, (unsigned long *)&mode);
connect(...);
参考资料
[1] socket connec连接超时处理
[2] Windows上如何玩非阻塞的connect?---让程序员自定义connect函数的超时时间
[3] Linux下connect超时处理【总结】