Сканирование /proc/net/ip_conntrack
не надежно, потому что оно работает, только если включен сетевой фильтр / отслеживание соединения.И он не только считает соединения с вашего сервера, но также и через ваш сервер (если он действует как маршрутизатор).
Лучше было бы получить информациюв тех же местах, что и netstat
: /proc/net/tcp
, /proc/net/tcp6
(и аналогичные файлы для UDP и других протоколов, если вы заботитесь о них).Эта сумма более или менее соответствует значению netstat
внутри вашего приложения.Вы должны задаться вопросом, стоит ли это того.Кроме того, можно (более или менее) переносить вызов netstat
, в то время как непосредственное чтение этих файлов зависит от Linux.
Я знаю, что вы обеспокоены ресурсами, необходимыми для сканирования полной таблицы каждый раз, но я неНе думаю, что есть слово «подписаться» и получать уведомления, когда новые соединения установлены или разорваны.Самым близким, что я могу придумать, было бы прослушивание сетевого интерфейса (используя libpcap) и отслеживание настроек и разрывов соединений самостоятельно.