Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取访问点列表并使用Linux Mono/C进行连接#_C#_Linux_Mono_Wifi - Fatal编程技术网

C# 获取访问点列表并使用Linux Mono/C进行连接#

C# 获取访问点列表并使用Linux Mono/C进行连接#,c#,linux,mono,wifi,C#,Linux,Mono,Wifi,我目前使用的是运行Ubuntu 15.10的便携式设备。其想法是,该装置将没有屏幕(辅助设备将可选地连接到它,但独立,用于在现场记录数据),并从SSID和Wifi密码列表中读取,以便在可用时连接到它们 我们目前正在设备上使用Mono C#,但在wifi方面遇到了障碍 我的问题是:是否需要在C#环境内部实现一个类或DLL来获取访问点,并使用密码进行连接,或者使用一个终端工具,该工具将a)返回可用AP列表,B)接收SSID和密码并尝试连接 谢谢你的帮助 当前解决方案: 我运行了一个nmcli进程,试

我目前使用的是运行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小程序,杀死它以停止弹出窗口后,出现了一系列802.1X错误,尽管不是每次都出现。如果我尝试连接足够多次,它最终会成功

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


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

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

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

有关mono/C#的D-Bus API,请参阅。在中阅读有关NetworkManager的D-Bus API的更多信息。有关
dbus sharp
NetworkManager
之间交互的实现,请参见示例


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

@RQDQ这基本上是关于如何通过命令行连接Ubuntu中的wifi的问题,不是吗?没有太多的理由使用pinvoke或其他工具来实现这一点,只需调用命令行工具即可。@Evk-不,问题是具体如何从c#/mono实现这一点。OP分享说他正在使用命令行,但它工作不好。我理解,但这很可能只是意味着他使用了错误的工具(或以错误的方式)。询问,因为试图了解您是否真的需要pinvoke解决方案或命令行工具仍然可以。