Вызов send() вернул положительное число, ошибки нет — и разработчик считает, что данные дошли до собеседника. На практике успешный send() говорит только о том, что байты скопированы в буфер ядра на вашей стороне. Дальше начинается путь, который из прикладного кода не виден, и на этом пути данные могут застрять надолго — а приложение об этом не узнает, если не спросит явно.
Подробнее →