Существует (по крайней мере) две разные части информации, которые могут вам понадобиться: количество данных, которые еще не были отправлены, и количество данных, которые были отправлены, но не-ACK-ed.
В Linux: SIOCOUTQ
документировано, чтобы указать количество неотправленных данных, но на самом деле дает сумму (данные неотправленных данных + отправленные, но не ACK-ed). A recent patch (Feb 2016) позволил получить фактические неотправленные данные из поля tcpi_notsent_bytes
в структуре TCP_INFO
.
На MacOS и прошивкой: getsockopt(fd, SOL_SOCKET, SO_NWRITE, ...)
это так же, как SIOCOUTQ
: это документально, чтобы дать количество неотправленных данных, но на самом деле дает сумму (неотправленные данные + данные отправлены, но-не-ACK-е изд). Я не знаю, как получить более мелкую информацию.
В Windows: GetPerTcpConnectionEStats
с опцией TcpConnectionEstatsSendBuff
вы получаете как неотправленные данные, так и данные отправленного, но не ACK-ed as two separate numbers.
Я не знаю, как получить эту информацию в других операционных системах.
Вы когда-нибудь находили решение? –
Нет, Linux-only TCP_INFO был для меня приемлемым. – darkk