2013-07-28 3 views
0

Я пытаюсь подключиться к компьютеру через сокет в C++. В основном, что этот код должен делать, это попытаться подключиться, и если он не может подключиться, он должен ждать 3 секунды и повторить попытку.C++ sleep() breaks program

while (true) { 
    if (connect(sock, (struct sockaddr *) &echoserver, sizeof(echoserver)) >= 0) 
    { 
     break; 
    } 
    cout << "Connection failed!"; 
    sleep(3); 
} 

Что делает этот код, когда его работы он будет подключаться, если он может, но если она не может, то cout никогда не вызывается и sleep никогда не вызывается либо. Когда sleep не существует, программа работает и постоянно пытается подключиться к сокету, но нет задержки, поэтому она не будет подключаться в любом случае. Мне действительно нужно отложить работу.

Может ли кто-нибудь помочь?

ответ

4

После отказа connect сокет ссылается на неисправное соединение. Вы больше не можете использовать его для подключения к чему-либо. Необходимо создать close существующий сокет и выделить новый. Это было бы намного легче диагностировать, если бы вы сообщили об ошибке в заявлении cout. (См. Документы для strerror и errno.)

+0

Спасибо, я согласился бы на это, отвечая, если бы мог, но мне все равно придется ждать 7 минут, но спасибо – jamespick