7

有人知道 MAC OS X 的 NETLINK Sockets API 等效吗?我正在尝试将 Linux 应用程序移植到 MAC OS X,但在 MACOS 中找不到类似的东西。

我需要在我的应用程序中提供对网络适配器的异步访问。

每隔一定的秒数轮询网络适配器关于配置更改等对我来说不是方便的解决方案。NETLINK Socket API 让我只有在发生有趣的事情时才会收到通知。

我知道 NETLINK 是 Linux 特定的东西,用于在 Linux 内核和用户空间之间进行通信,但在 MACOS 下可能存在类似 NETLINK 的东西。

我看到了与内核通信的唯一工具——sysctl()

有人有任何信息吗?

4

2 回答 2

4

您可以使用OSX 为此提供的文档的 NKE 部分中记录的内核控制架构。

于 2011-01-08T17:18:38.460 回答
-3

执行此操作的传统方法是使用 select/poll/epoll/kqueue 等待套接字上的事件。请参阅此答案以了解什么平台上的最佳选择:select vs poll vs epoll

或者,为每个连接生成一个新线程并使用阻塞套接字读取。然而,历史告诉我们,这比通过 select/poll/kqueue 的非阻塞 I/O 更难扩展。这是 1990 年代大多数人最初编写网络服务器的方式。根据您的编码风格,阻塞 I/O + 线程可能更容易使用。

请注意,与它的名字相反,epoll 不是轮询。

于 2010-12-21T12:25:15.797 回答