Кто -нибудь знает эквивалент API Sockets Sockets Netlink для Mac OS X?

StackOverflow https://stackoverflow.com/questions/4498994

Вопрос

Кто -нибудь знает эквивалент API API Sockets NetLink для Mac OS X? Я пытаюсь портировать приложение Linux в Mac OS X и не мог найти что -то подобное в MacOS.

Мне нужно предоставить асинхронный доступ к сетевому адаптеру в моем приложении.

Адаптер избирательного сети о изменениях конфигурации и т. Д. Каждое определенное количество секунд для меня не является удобным решением. NetLink Socket API игра Me Way для получения уведомления только тогда, когда произошло что -то интересное.

Я знаю, что NetLink - это особенность Linux для связи между ядром Linux и пространством пользователя, но, возможно, существует что -то вроде NetLink под MacOS.

Я вижу единственный инструмент для связи с ядром - sysctl ()

У кого -нибудь есть информация?

Это было полезно?

Решение

Вы можете использовать Архитектура контроля ядра который задокументирован в разделе NKE их документов, которые OSX предоставляет по этой причине.

Другие советы

Традиционный способ сделать это состоит в том, чтобы дождаться событий в розетке, используя Select/опрос/Epoll/Kqueue. Смотрите этот ответ на то, что лучше на какой платформе: Выберите против опроса против Эполла.

В качестве альтернативы, создайте новый поток для каждого соединения и используйте блокирующие чтения. Тем не менее, история научила нас, что это менее масштабируемое, чем не блокирующий ввод-вывод через Select/опрос/kqueue. Это был способ, которым большинство людей изначально писали сетевые серверы в 1990 -х годах. В зависимости от вашего стиля кодирования, с блокировкой ввода/вывода + может быть легче работать.

Обратите внимание, что вопреки его названию, Epoll не избирает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top