Смысл TCP в том, чтобы обеспечить надежную передачу данных , несмотря на то, что под имеется ненадежная сеть. По сути, TCP работает только с данными, отправленными после получения пакета подтверждения от удаленного компьютера; до тех пор ядро хранит данные локально. Время, в течение которого он будет буферизироваться, может быть довольно продолжительным, в зависимости от набора настроек в /proc
, а также от измеренных параметров сети.
edit: приложение может проверить размер ожидающей очереди отправки, используя SIOCOUTQ
ioctl; см. справочную страницу tcp (7). В той же man-странице также обсуждается обработка ошибок.
Если вы хотите, чтобы эти данные были утеряны вместо буферизации, используйте UDP.