Ответ зависит. Когда вы пытаетесь отправить данные, окно TCP ядра будет медленно заполняться, пока оно не сможет больше принимать данные. Тогда ваш send будет заблокирован, потому что внутренний буфер ядра заполнен. TCP имеет несколько таймеров, которые срабатывают через некоторое время. Когда это произойдет, ядро выдаст ошибку при отправке запроса, среда выполнения Erlangs VM преобразует его в {error, Reason}
, где Reason
- это сообщение об ошибке posix()
из базовой системы.
Если вы хотите убедиться, что данные были получены, вы должны подтвердить их в потоке другим способом. Или вы можете сделать данные идемпотентными, чтобы вы могли переслать их без проблем. Это особенно важно, если другой конечной точкой, клиентом, является устройство, такое как мобильный телефон, где отключения будут происходить все время.
Чтобы проверить это, вы можете заблокировать связь с помощью правила брандмауэра на lo.