2

常に true を返すため、次のコードよりも有効なインターネット接続を確認する方法はありますか?理由はわかりません。

bool isNetwork=NetworkInterface.GetIsNetworkAvailable();
if(!isNetwork)
{
   MessageBox.Show("Available.");
}
4

2 に答える 2

6

GetIsNetworkAvailable利用可能なネットワーク インターフェイスに基づいて結果を返します。これが false を返すようにするには、すべての無線をオフにするか、フライト モードをオンにする必要があります。

次のことも確認してください。

NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.None

ただし、実際には、特定の URI に到達できるかどうかを確認することをお勧めします。「インターネット」に接続できるかどうかを知っているだけでは、接続をブロックするプロキシがエンドポイントとの間にある場合や、到達しようとしているサーバーがダウンしているかエラーが発生している場合でも役に立ちません。

特定のエンドポイントから必要なデータを取得できるかどうかを知りたい場合、確実に知る唯一の方法は試してみることです。成功すればできる。そうでない場合、多くの理由が考えられます。

于 2013-11-05T14:39:30.130 に答える
3

これも試して、

 public static bool CheckNetworkConnection()
    {
        var networkInterface = NetworkInterface.NetworkInterfaceType;

        bool isConnected = false;
        if ((networkInterface == NetworkInterfaceType.Wireless80211)||(networkInterface== NetworkInterfaceType.MobileBroadbandGsm)||(networkInterface==NetworkInterfaceType.MobileBroadbandCdma))
            isConnected = true;

        else if (networkInterface == NetworkInterfaceType.None)
            isConnected = false;
        return isConnected;
    }
于 2014-08-05T09:54:28.770 に答える