繁体   English   中英

获取接入点列表并使用Linux Mono / C连接#

[英]Get List of Access Points And Connect Using Linux Mono/C#

我目前正在使用运行Ubuntu 15.10的便携式设备运行。 我们的想法是这个单元没有屏幕(可选择连接辅助设备,但是可以单独连接,用于现场数据记录),并从SSID和Wifi密码列表中读取以连接到它们可用。

我们目前正在设备上使用Mono C#,但在涉及到wifi时遇到了麻烦。

我的问题是:我需要在C#环境中实现一个类或DLL来获取接入点,并使用密码连接,或者使用终端工具,A)返回可用的AP列表和B )可以接受SSID和密码并尝试连接?

谢谢您的帮助。

当前的解决方案:我运行了一个nmcli进程,试图解析传入的流(在Linux上不擅长这个),以获得一个SSID列表。

经过一些比较,我运行另一个进程,根据文本文件调用“nmcli dev wifi connect password”。

这目前正在运作,但我想知道是否有更好的解决方案。

编辑2:上述主要问题是,如果提供了错误的密码,它将启动“需要密码”窗口并锁定系统。

编辑3:在搞乱了nm-applet之后,杀死它以阻止弹出,出现了一系列802.1X错误,但不是每次都出现。 如果我尝试连接足够多次,它最终会成功。

编辑4:重新安装网络管理器似乎修复了一些问题,但仍然有问题。

编辑5:关于iwConfig,我试过了,但是我发现当我使用iwlist时wlan0扫描 grep ESSID,它只返回当前连接的网络9/10次。

您基本上想要为NetworkManager的D-Bus API实现C#API。

要扫描可用的无线网络,您应该连接到NetworkManager的D-Bus,调用getDevices方法,并调用其getNetworks

有关单声道/ C#的D-Bus API,请参阅dbus-sharp 此处阅读有关NetworkManager的D-Bus API的更多信息。 请参阅此处 ,了解dbus-sharpNetworkManager之间交互的实现示例。

请记住,这只适用于使用NetworkManager的Linux系统(几乎所有主要的Linux发行版,包括Ubuntu)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM