Existen (al menos) dos tipos diferentes de información que podría desear: la cantidad de datos que aún no se han enviado y la cantidad de datos que se han enviado pero no ACK-ed.
En Linux: SIOCOUTQ
está documentado para proporcionar la cantidad de datos no enviados, pero en realidad da la suma de (datos no enviados + datos enviados pero no ACK). Un recent patch (Feb 2016) hizo posible obtener los datos reales no enviados del campo tcpi_notsent_bytes
en la estructura TCP_INFO
.
en MacOS y el IOS: getsockopt(fd, SOL_SOCKET, SO_NWRITE, ...)
es igual SIOCOUTQ
: está documentado para dar la cantidad de datos enviados, pero en realidad le da la suma de (datos no enviados + datos-pero-no-ACK-ed enviado). No conozco ninguna forma de obtener información más precisa.
En Windows: GetPerTcpConnectionEStats
con la opción TcpConnectionEstatsSendBuff
le proporciona tanto los datos no enviados como los enviados pero no los datos ACK-ed as two separate numbers.
No sé cómo obtener esta información en otros sistemas operativos.
¿Alguna vez encontró una solución? –
No, el TCP_INFO solo para Linux era aceptable para mí. – darkk