其中 c/c++库可用于处理 Linux 的 wifi 连接吗?
我想实现 WiFi 管理器程序,它应该处理以下内容。
- wi-fi 接入点已出现或消失的通知
- 提供可用 wifi 接入点的信息
- 连接/断开与给定 wi-fi 接入点的连接
为实现此目的,推荐用于 Linux 的 C/C++ WiFi 库是哪一个?
I want to implement WiFi manager program which should handle the following.
- notification on wi-fi access point has come or gone
- provide information of available wifi access point
- connect/disconnect with a given wi-fi access point
Which is the recommended C/C++ WiFi library for Linux to achieve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Fedora 上(至少),与 NetworkManager 交互的首选方式是通过 DBus。
虽然无线工具等可以工作——甚至直接内核调用,如果你必须的话——但有几个问题:
您可以为您提到的所有任务发送和接收 DBus 消息,适用于 WiFi 以及任意其他类型的网络接口。 API 发布于此处,版本 0.8。
对于较新的操作系统,API 显然有更改,其中迁移指南。
他们的 wiki 应该非常有帮助。
我知道 Fedora 和 Ubuntu 默认都使用 NetworkManager;我相信许多其他系统也这样做,但没有详尽的列表。
当然,如果您使用的是嵌入式系统、自定义发行版或其他系统,那么您的情况可能会有所不同。
On Fedora (at least), the preferred way to interact with NetworkManager is via DBus.
While wireless-tools and the like will work — even direct kernel calls, if you must — there are a couple of problems:
You can send and receive DBus messages for all the tasks you mentioned, for WiFi as well as arbitrary other types of network interfaces. The API is published here, for version 0.8.
For newer operating systems, there are apparently changes in the API, with a migration guide.
Their wiki should be really helpful.
I know both Fedora and Ubuntu use NetworkManager by default; I believe many other systems do, as well, but don't have an exhaustive list.
Of course, if you're using an embedded system, custom distribution, or something, then your mileage may vary.
那将是 无线工具
That would be wireless-tools
我建议直接使用 NetworkManager 库。
您可以使用低级 D-Bus 库或 libnm-glib 库,这使通信更容易: 添加连接glib示例
有关更多信息,您可以查看命令行客户端nmcli的代码。
I would recommend using directly the NetworkManager Library.
You can use low-level D-Bus library or libnm-glib library, that makes communication easier: example add connection glib
For more info, you can take a look into the code of the command line client nmcli.