Доступ к статистике / информации по TCP для каждого сокета возможен?(C / C ++) - PullRequest
5 голосов
/ 17 ноября 2010

Мне требуется некоторая информация, например, количество повторных пакетов / потеря пакетов, произошедших для определенного созданного мной TCP-сокета. Кто-нибудь знает способ, как получить доступ или запросить такую ​​информацию непосредственно из моей программы на C / C ++? Может быть, что-то специфичное для Linux?

Или мне нужно (в качестве обходного пути) захватить и проанализировать свой собственный трафик?

Заранее спасибо!

1 Ответ

8 голосов
/ 17 ноября 2010

Используя getsockopt() для получения или setsockopt() для установки параметров сокета TCP, вы можете использовать параметр TCP_INFO на компьютерах с Linux для получения информации о сокете. Этого параметра следует избегать, если вы хотите, чтобы код был переносимым.

То, что вы получите, - это struct tcp_info от ядра, которая содержит такую ​​информацию, как повторные передачи, потерянные пакеты, состояния и т. Д.

...