Существует (как минимум) две разные части информации, которые вам могут понадобиться: объем данных, которые еще не были отправлены, и объем данных, которые были отправлены, но не подтверждены.
В Linux: SIOCOUTQ
задокументировано для указания количества неотправленных данных, но фактически дает сумму (неотправленные данные + отправленные, но не подтвержденные данные). Недавний патч (февраль 2016 г.) позволил получить фактические неотправленные данные из поля tcpi_notsent_bytes
в структуре TCP_INFO
.
В macOS и iOS: getsockopt(fd, SOL_SOCKET, SO_NWRITE, ...)
аналогично SIOCOUTQ
: задокументировано, что оно дает количество неотправленных данных, но фактически дает сумму (неотправленные данные + отправленные, но не подтвержденные данные). Я не знаю, как получить более детальную информацию.
В Windows: GetPerTcpConnectionEStats
с опцией TcpConnectionEstatsSendBuff
дает вам как неотправленные данные, так и данные, отправленные, но не подтвержденные ACK в виде двух отдельных чисел .
Я не знаю, как получить эту информацию в других операционных системах.