有人知道 MAC OS X 的 NETLINK Sockets API 的等效项吗?

发布于 2024-10-08 14:55:33 字数 359 浏览 6 评论 0原文

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

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

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

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

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

有人有任何信息吗?

Does anybody know equivalent for NETLINK Sockets API for MAC OS X ?
I am trying to port Linux application to MAC OS X and I couldn’t find anything similar in MACOS.

I need to provide asynchronous access to the network adapter in my application.

Polling network adapter about configuration changes etc every certain amount of seconds is not convenient solution for me.
NETLINK Socket API game me way to receive notification only when something interesting happened.

I know that NETLINK is Linux specific thing to communicate between Linux kernel and user space, but maybe there is exist something like NETLINK under MACOS.

I see the the only tool to communicate with kernel – sysctl()

Does anybody have any info?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云雾 2024-10-15 14:55:33

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

You can use the kernel control architecture which is documented in the NKE section of their docs that OSX provides for that reason.

ま昔日黯然 2024-10-15 14:55:33

传统的方法是使用 select/poll/epoll/kqueue 等待套接字上的事件。请参阅此答案,了解什么平台上最好的:select vs poll vs epoll

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

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

The traditional way of doing this is to wait for events on the socket using select/poll/epoll/kqueue. See this answer for what is best on what platform: select vs poll vs epoll.

Alternatively, spawn a new thread for each connection and use blocking socket reads. Though, history have taught us that this is less scalable than non-blocking I/O via select/poll/kqueue. This was the way most people originally wrote network servers in the 1990s. Depending on your coding style, blocking I/O + threads may be easier to work with.

Note that contrary to its name, epoll is not polling.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文