@gibsonman01

Почему функция send может вернуть количество переданных байтов, меньшее указанного в её аргументе?

В MSDN написано:

If no error occurs, send returns the total number of bytes sent, which can be less than the number requested to be sent in the len parameter.

Если я использую TCP, почему так может быть и почему send тогда не возвращает ошибку?
Как клиент может понять, что не все данные были переданы?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
Так может быть по определению. Т.е. функция send() может отправить не все данные, и это является нормальной ситуацией. В Windows это редкая ситуация, может быть если вызван, например WSPCancelBlockingCall(). В POSIX системах это достаточно частая ситуация, которая может возникнуть при недостаточном количестве буферов или при получении сигнала, например.
send() возвращает количество отправленных байт, проверяйте его и доотправляйте то, что не было отправлено.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы