【发布时间】:2016-11-09 17:49:20
【问题描述】:
我目前正在使用运行 Ubuntu 15.10 的便携式设备运行。这个想法是这个单元将没有屏幕(一个辅助设备可以选择连接到它,但它是独立的,用于在现场记录数据),并从 SSID 和 Wifi-Passwords 列表中读取以连接到它们可用。
我们目前在设备上使用 Mono C#,但在 wifi 方面遇到了问题。
我的问题是:我需要在 C# 环境中实现一个类或 DLL 来获取接入点,并使用密码进行连接,或者使用终端工具来 A) 返回 AP 列表可用并且 B) 可以接收 SSID 和密码并尝试连接?
感谢您的帮助。
当前解决方案: 我运行了一个 nmcli 进程,试图解析传入的流(在 Linux 上还不擅长),以获取 SSID 列表。
经过比较,我运行另一个进程,基于文本文件调用“nmcli dev wifi connect password”。
目前正在运行,但我想知道是否有更好的解决方案。
编辑 2:上面的主要问题是,如果提供了错误的密码,它会启动“需要密码”窗口并锁定系统。
编辑 3:在弄乱了 nm-applet 之后,将其杀死以停止弹出,出现了一系列 802.1X 错误,但不是每次都出现。如果我尝试连接足够多次,它最终会成功。
编辑 4:重新安装 network-manager 似乎解决了一些问题,但仍然存在错误。
编辑5:关于iwConfig,我试过了,但我发现当我使用iwlist wlan0 scan | grep ESSID,只返回当前连接的网络9/10次。
【问题讨论】:
-
@RQDQ 这基本上是关于如何通过命令行连接到 Ubuntu 中的 wifi 的问题,不是吗?没有太多理由使用 pinvoke 或其他东西,只需调用命令行工具即可。
-
@Evk - 不,问题是专门从 c#/mono 执行此操作。 OP 分享说他正在使用命令行,但效果不佳。
-
我明白,但这很可能只是意味着他使用了错误的工具(或以错误的方式)。询问是因为试图了解您是否真的需要 pinvoke 解决方案或命令行工具。