send
заботится только о том, чтобы поместить данные в локальный буфер сокетов, то есть он не будет ждать подтверждения от компьютера получателя или даже ждать, пока данные не будут обработаны приложением получателя (что даже позже). Если вам нужна такая информация, вам потребуется подтверждение на уровне приложения. Более того, в то время как ACK получает отправку по TCP, он все равно не получит отправку по другим протоколам, таким как UDP.
send
завершится сбоем только в том случае, если не может поместить данные в буфер сокета, возможно, из-за отсутствия буфера сокета (сокет закрыт) или потому что буфер сокета уже заполнен, но send
называется неблокирующим. Если буфер сокета заполнен и send
называется блокировкой, он будет просто блокироваться, пока в буфере сокета снова не будет места.