有人知道Mac OS X的NetLink插座API等效吗?
题
有人知道Mac OS X的NetLink插座API等效吗?我正在尝试将Linux应用程序移植到Mac OS X,但在MacOS中找不到类似的内容。
我需要在应用程序中提供对网络适配器的异步访问。
关于配置更改等的投票网络适配器对我来说并不是方便的解决方案。 Netlink插座API游戏只有在发生有趣的事情时才收到通知的方式。
我知道NetLink是Linux特定的东西,可以在Linux内核和用户空间之间进行通信,但是也许MacOS下的Netlink类似于NetLink。
我看到与内核交流的唯一工具 - sysctl()
有人有任何信息吗?
解决方案
您可以使用 内核控制体系结构 在其文档的NKE部分中记录了OSX出于此原因提供的文档。
其他提示
传统的方法是使用Select/Poll/Epoll/Kqueue等待插座上的事件。请参阅此答案,以了解哪个平台上最好的内容: 选择VS民意调查与Epoll.
或者,为每个连接产生一个新线程,并使用阻止套接字读取。不过,历史告诉我们,通过SELECT/COLL/KQUEUE,这比非障碍I/O的可扩展性不那么可扩展。这是大多数人最初在1990年代撰写网络服务器的方式。根据您的编码样式,阻止I/O +线程可能更容易使用。
请注意,与它的名称相反,Epoll并不是轮询。
不隶属于 StackOverflow