Я создаю сетевую утилиту для OS X. Я прошел документацию по Apple, но я не могу найти фреймворк, который позволяет моему приложению отслеживать входящие байты. Может ли кто-нибудь указать мне в правильном направлении? Спасибо за ваше время!Monitor Incoming Bytes OS X
ответ
Чтобы получить статистику по сети, вы можете использовать sysctl
system call. Это довольно тонко документировано; есть another answer на StackOverflow, который дает краткий пример, и для более подробной информации я бы рекомендовал посмотреть на netstat source code.
Я думаю, что что-то подобное можно было бы сделать с
http://www.wireshark.org/ или http://www.tastycocoabytes.com/cpa/
В Linux вы можете просто слушать файл, который связан с вашей сетевой карты.
Но я не думаю, что это может быть сделано простым способом в OS X. Но действительно, должен быть какой-то способ, думающий о LittleSnitch.
В каком файле вы думаете? Один из файлов в разделе '/ sys/class/net/{interface}/statistics', где {interface} - это имя сетевого интерфейса для сетевого адаптера? Если это так, то ответ Брайана Кэмпбелла применим: вы используете sysctl для OS X (и других приложений с ОС BSD), чтобы получить эти статистические данные (не так просто, как чтение файла статистики, но не так уж плохо), как он говорит, netstat'). –
Вы можете использовать libpcap, который представляет собой переносную библиотеку для выполнения захватов пакетов, используемых tcpdump, Wireshark и т. Д. Это не официальная библиотека Apple, но она лицензирована BSD, поэтому у вас не должно быть проблем с ее использованием.
Обратите внимание, что, хотя это не официальная библиотека Apple, поскольку она не была создана Apple, это * - это библиотека, которая поставляется с OS X, в комплекте с ручными страницами и файлами заголовков. –
Что вы подразумеваете под контролем входящих байтов? Вы хотите захватить все входящие пакеты и иметь возможность отображать их содержимое? Или вы просто хотите получить количество входящих байтов (или байтов в секунду) в сетевой интерфейс, чтобы вы могли отображать показатели производительности? –
Я просто отслеживаю использование данных. Мне нужны пакеты, чтобы определить их размер. –