"плохой" int connect
От: Evilguc  
Дата: 25.10.08 13:09
Оценка:
Привет всем!
Функция 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++. Прикладные вопросы' — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.