6

接続しているネットワーク接続の種類を検出しようとしています。Wi-Fiか3Gか?c# win forms .net 2.0 または 4.0 を使用してそれを行う方法はありますか?

        foreach (NetworkInterface adapter in adapters)
        {
            if (adapter.OperationalStatus == OperationalStatus.Up)
            {
                if (adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
                {
                    lblNetworkType.Text = "you are using WiFi";
                    break;
                }
                else if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ppp)
                {
                    lblNetworkType.Text = "you are using 3G or ADSL or Dialup";
                    break;
                }
                else if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
                {
                    lblNetworkType.Text = "you are using Ethernet";
                    break;
                }
            }
        }
4

1 に答える 1

4

残念ながら、これをそのように行うための「きちんとした」方法はありません。3G接続は、ADSLまたはダイヤルアップ接続と同じように見えます(ネットワークタイプはPPPです)。

WiFi / 3Gのみを使用することが確実な場合は、GetAllNetworkInterfacesNetworkInterfaceによって提供されるクラスの情報を確認し、インターフェイスタイプがPPPの場合は3Gとして扱うことができます。しかし、私が述べたように、これは他のタイプのモデム接続でも同じです。

編集:デバイス名または説明で「3G」、「HSPA」、「HSDPA」、「ドングル」を探している場合があります。しかし、これは絶対的に確実ではなく、「まともな推測」にすぎません。

于 2012-11-29T12:08:08.137 に答える