Я пытаюсь сделать парсер на с++
Написал такой код, который переводит сокет в неблокирующий режим
Но функция connect возвращает значение через 10-30 секунд.
Мне нужно поставить таймаут на 0.1 секунду.
Как это сделать?
void CheckPort(string ip, int port) {
WSAStartup(MAKEWORD(2, 2), NULL);
SOCKET sock;
SOCKADDR_IN Info;
int nret;
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
Info.sin_family = AF_INET;
Info.sin_addr.s_addr = inet_addr(ip.c_str());
Info.sin_port = htons(port);
u_long nbio = 1;
ioctlsocket(sock, FIONBIO, &nbio);
timeval tv; tv.tv_sec = 1; tv.tv_usec = 0;
nret = connect(sock, (SOCKADDR *)&Info, sizeof(Info));
//int result = select(sock, NULL, NULL, NULL, &tv);
//cout << result << endl;
if (!nret)
{
// connection successful
cout << ip << " TRUE" << endl;
output << ip << endl;
}
else
{
// connection fail
cout << ip << " FALSE" << endl;
}
closesocket(sock);
}