Привет всем!
Функция
connect в winsocks, в случае, если сервер не сдушает порт или вообще отсутствует, "вешает" программу на секунд 20!!! По-моему это очень много, и поэтому я геморройным способом проверяю весит ли поток, и в случае чего завершаю его:
...
if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) != SOCKET_ERROR) //вот тут обычно происходит "подвешивание"
{
...
}
...
//a тут проверяю сколько времени весит
int CheckIt()
{
int num = 0;
while(1)
{
Sleep(500);
if(hash == -999 && num >= 8)
{
TerminateThread(hThread, 0);
return -999;
}
if(hash != -999)
{
access = 1;
return hash;
}
num++;
}
return -13;
}
но вот я считаю, что такой способ не очень рационален да и небезопасен... может кто знает что-нибудь лучше???
Да, кстать, пробовал сдеоать сокет неблокирующим, но в этом случае прога не успевала приконнектиться.
Спасибо!
27.10.08 01:14: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт