Запрос о контрейлерных FIN и получить
Будет ли этот код работать, если получен FIN с привязкой?
while(1) {
rc = recv(sock,buf,sizeof(buf),MSG_WAITALL);
if (rc > 0)
{
/* Code to process recv buf */
}
else if (rc == 0)
{
/* received FIN ?? */
close(sock);
break;
}
else /* rc < 0 */
{
/* Handle error */
break;
}
}
Хотелось бы знать, сработает ли это или нет, и какие альтернативные предложения у вас могут быть.
1 ответ
Решение
Если есть данные, rc
будет положительным, и ваш первый if
блок выполнится. Если в следующий раз ничего не останется, кроме FIN, rc
будет ноль, и ваш второй блок будет выполняться.