Re[3]: recv возвращает -1 почему?
От: cap Flint Россия  
Дата: 18.04.07 11:26
Оценка:
Здравствуйте, Ruweb, Вы писали:


R>я пишу cgi приложение, а WSARecv по моему используется в win aplication

R>
R>while( sk_recv = recv(sk[0], buff+help, 60000-help, 0) ) 
R>{
R>    if( sk_recv == -1 || sk_recv == WSAEWOULDBLOCK ) {
R>        Sleep(5);
R>        continue;
R>    }
R>    help += sk_recv;
R>}
R>

R>так нармально делать?
R>если соединие оборвалось, то recv вернёт 0?

нет, так не нормально

int res = recv(...);
if(res == 0)
// сокет закрыли
else if(res == SOCKET_ERROR)
{
  int err = WSAGetLastError();
  // и вот тут уже проверяем на WSAEWOULDBLOCK и т.п.
  // хотя получинение WSAEWOULDBLOCK  зависит от типа сокета
}
else 
// ура, мы получили что то из сокета
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.