gpt4 book ai didi

c# - 检查是否通过以太网 C# 连接

转载 作者:行者123 更新时间:2023-11-30 23:23:42 26 4
gpt4 key购买 nike

我已经阅读了一些这方面的资料。我关注了this接受了答案并正在使用 Managed WiFi API如果我通过 WiFi 连接,获取 SSID。这是我的代码:

private void setSSID() {
WlanClient wlan = new WlanClient();

Collection<String> connectedSsids = new Collection<string>();

foreach (WlanClient.WlanInterface wlanInterface in wlan.Interfaces) {
Wlan.Dot11Ssid ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid;
connectedSsids.Add(new String(Encoding.ASCII.GetChars(ssid.SSID, 0, (int)ssid.SSIDLength)));
}
}

如果我通过 WiFi 连接,这将完美地获取 SSID,但如果仅通过以太网连接,则会抛出异常。理想的解决方案:

  1. 输入 setSSID() (或类似的东西)
  2. 检查是否通过以太网连接
  3. 如果是,返回null/0/undefined
  4. 否则,返回 SSID
    (我已经检查过它是否连接到网络)

我查看了 WMINetworkInformation 命名空间,但都没有提供我要查找的内容。
WlanApi.cs< 中查找/em>,这里抛出异常:

public Wlan.WlanConnectionAttributes CurrentConnection {
get {
int valueSize;
IntPtr valuePtr;
Wlan.WlanOpcodeValueType opcodeValueType;
Wlan.ThrowIfError(
Wlan.WlanQueryInterface(client.clientHandle, info.interfaceGuid, Wlan.WlanIntfOpcode.CurrentConnection, IntPtr.Zero, out valueSize, out valuePtr, out opcodeValueType));
try {
return (Wlan.WlanConnectionAttributes)Marshal.PtrToStructure(valuePtr, typeof(Wlan.WlanConnectionAttributes));
}
finally {
Wlan.WlanFreeMemory(valuePtr);
}
}
}

还看了:

最佳答案

您可以捕获异常(报告为 Win32Exception),并将其视为“无 WiFi 可用”条件。

如果您愿意,您可以检查异常的 ErrorCodeHResult 属性,以确保它是您在缺少 WiFi 的情况下所期望的错误,而不是其他一些更有问题的异常。在后一种情况下,您可能希望重新抛出异常(至少在您决定采用一个好的策略来处理那种类型的错误之前)。

还有 native wireless LAN API您可以直接使用它来处理错误代码/结果,而不是处理异常。但我认为在您的情况下,处理抛出的异常是最简单的,因为否则它会按照您的意愿工作。

关于c# - 检查是否通过以太网 C# 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38232229/

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