gpt4 book ai didi

c# - Linux上C#/mono判断无线网卡的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:23 24 4
gpt4 key购买 nike

那里

我想通过 C#/mono 得到一个结果,如果我的 Linux 设备上有无线适配器。

如果我在连接了无线适配器的情况下使用命令“iwconfig”,结果如下:

lo        no wireless extensions.

eth0 no wireless extensions.

wlan0 IEEE 802.11bg ESSID:off/any
Mode:Managed Access Point: Not-Associated
Encryption key:off
Power Management:on

如果没有附加,结果是:

 lo        no wireless extensions.

eth0 no wireless extensions.

我想通过System.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType得到它,但是对于“eth0”和“wlan0”,返回结果似乎都是“Ethernet”。

所以我的问题是有没有其他方法来区分无线适配器?谢谢。

最佳答案

您可以执行以下操作之一:

  1. 检查接口(interface)是否出现在/proc/net/wireless中。
  2. 创建一个套接字并在其上调用 SIOCGIWNAME,传递接口(interface)名称。
  3. 尝试任何您想要的无线特定任务,看看它是否失败。

#2 的可能解决方案是:

using System;
using System.Net.NetworkInformation;
using System.Net.Sockets;

public class App
{
public static int Main (string[] args)
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Unspecified);
foreach(NetworkInterface nic in nics)
{
byte[] name = System.Text.Encoding.ASCII.GetBytes(nic.Description);
byte[] request = new byte[32];
Array.Copy(name, request, name.Length);
bool wireless;
try
{
// SIOCGIWNAME is 0x8b01
socket.IOControl(0x8b01, request, request);
wireless = true;
} catch (SocketException) {
wireless = false;
}
Console.WriteLine("{0} wireless={1}", nic.Description, wireless);
}
return 0;
}
}

关于c# - Linux上C#/mono判断无线网卡的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com