哪个C/C++库可用于处理Linux的WiFi连接?

15

我希望实现一个WiFi管理程序,应该处理以下内容:

  • 当WiFi接入点出现或消失时发出通知
  • 提供可用WiFi接入点的信息
  • 连接/断开给定的WiFi接入点

哪个是在Linux上推荐使用的C/C++ WiFi库以实现这一目标?

3个回答

8
在Fedora(至少)上,与NetworkManager交互的首选方式是通过DBus。
虽然wireless-tools等工具可以使用 - 即使必须进行直接内核调用 - 但存在一些问题:
- 您可能需要超级用户特权 - NetworkManager可能会发生恐慌并与您发生冲突,除非您停止其服务 - 用户的常规网络控件(例如桌面托盘图标)几乎肯定配置为使用NetworkManager。
您可以发送和接收DBus消息以执行您提到的所有任务,包括WiFi以及任意其他类型的网络接口。该API已发布,版本为0.8,请参见此处
对于更新的操作系统,API中显然有更改,附有迁移指南
他们的维基应该非常有帮助。
我知道Fedora和Ubuntu都默认使用NetworkManager;我相信许多其他系统也是如此,但没有详尽的列表。
当然,如果您使用的是嵌入式系统、自定义分发或其他内容,则可能会有所不同。

这个答案对于需要WiFi控制但无法承担DBus基础设施价格并且不使用网络管理器的低功耗嵌入式项目来说是不够充分的。 - Jonathan Ben-Avraham
1
是的,但这并不是问题中所指定的内容。 - Shayne

6

3
我建议直接使用NetworkManager库
您可以使用低级D-Bus库或libnm-glib库,这使得通信更加容易:示例添加连接glib 要了解更多信息,请查看命令行客户端nmcli的代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接