Здраствуйте.
У меня бывает, что recv возвращает -1 , почему? а вот чтоб recv иернула WSAEWOULDBLOCK ниразу не встречал, хотя я данные без пауз в цикле читаю, может -1 и означает что данные еще не пришли?
Разъясните пожалуйста, что к чему.. буду очень Вам признателен)
Здравствуйте, Ruweb, Вы писали:
R>Здраствуйте. R>У меня бывает, что recv возвращает -1 , почему? а вот чтоб recv иернула WSAEWOULDBLOCK ниразу не встречал, хотя я данные без пауз в цикле читаю, может -1 и означает что данные еще не пришли? R>Разъясните пожалуйста, что к чему.. буду очень Вам признателен)
Да вероятно так оно и есть. Вообще юзай WSARecv чем тебя не устраивает?
На самом деле я не встречал в recv того о чем ты говориш.
Здравствуйте, Ruweb, Вы писали:
R>Разъясните пожалуйста, что к чему.. буду очень Вам признателен)
SOCKET_ERROR = -1
If no error occurs, recv returns the number of bytes received. If the connection has been gracefully closed, the return value is zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.
Здравствуйте, termitov, Вы писали:
T>Здравствуйте, Ruweb, Вы писали:
R>>Здраствуйте. R>>У меня бывает, что recv возвращает -1 , почему? а вот чтоб recv иернула WSAEWOULDBLOCK ниразу не встречал, хотя я данные без пауз в цикле читаю, может -1 и означает что данные еще не пришли? R>>Разъясните пожалуйста, что к чему.. буду очень Вам признателен)
T>Да вероятно так оно и есть. Вообще юзай WSARecv чем тебя не устраивает? T>На самом деле я не встречал в recv того о чем ты говориш.
я пишу cgi приложение, а WSARecv по моему используется в win aplication
Здравствуйте, Ruweb, Вы писали:
R>Здравствуйте, termitov, Вы писали:
T>>Здравствуйте, Ruweb, Вы писали:
R>>>Здраствуйте. R>>>У меня бывает, что recv возвращает -1 , почему? а вот чтоб recv иернула WSAEWOULDBLOCK ниразу не встречал, хотя я данные без пауз в цикле читаю, может -1 и означает что данные еще не пришли? R>>>Разъясните пожалуйста, что к чему.. буду очень Вам признателен)
T>>Да вероятно так оно и есть. Вообще юзай WSARecv чем тебя не устраивает? T>>На самом деле я не встречал в recv того о чем ты говориш.
R>я пишу cgi приложение, а WSARecv по моему используется в win aplication R>
R>так нармально делать? R>если соединие оборвалось, то recv вернёт 0?
нет, так не нормально
int res = recv(...);
if(res == 0)
// сокет закрылиelse if(res == SOCKET_ERROR)
{
int err = WSAGetLastError();
// и вот тут уже проверяем на WSAEWOULDBLOCK и т.п.
// хотя получинение WSAEWOULDBLOCK зависит от типа сокета
}
else// ура, мы получили что то из сокета