2012-10-19 4 views
0

사용자가 온라인/오프라인 상태인지 알 수있는 좋은 방법이 있습니까? 공용 정적 bool IsConnectedToNetwork(); 그것이 틀린가/참인지 항상 참인 것처럼 보입니다. 심지어 인터넷을 테스트 해 보더라도 인터넷을 종료해도 ...IsConnectedToNetwork for Windows8 WinRT Fail

나는 뭔가를 잃어버릴 수 있습니까?

public static bool nets() 
{ 
    bool go = 
     System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable(); 

    if (go == false) 
    { 
     return false; 
    } 
    return true; 
} 

이제 내 시작에 나는 실행

var ba = nets(); 

if (ba == false) 
{ 
    txtHeader.Text = "err"; 
} 
if (ba != false) 
{ 
    // Code 
} 

나는 또한 시도 :

public static bool IsConnectedToNetwork(); 
+0

입니다 인터넷 연결. –

+0

나는 이것을 실제로 시도했다 ... 거짓 긍정으로 돌아온다. 내 업데이트 된 코드를 보면 내 뜻을 알 수 있습니다 ... – user1667125

+0

네트워크 상태가 변경된 샘플을 보았습니까 (http://code.msdn.microsoft.com/windowsapps/Network-Information-Sample-63aaa201/) 보기/소스 코드 # content)? 그것은 정확히 당신이 무엇을 요구하는지에 대한 코드를 가지고 있습니다 (그리고 인터넷과 로컬 네트워크 연결을 포함합니다). –

답변

0

당신은 당신이 얻을 있는지 확인하기 위해 몇 가지 잘 알려진 URL 중 하나를 핑 (ping) 할 수 응답.

+0

솔직히 말하면, "Windows"를 사용하여 "Ping"을 찾을 수 없습니다 (Windows.Networking.Connectivity, using System .Net.NetworkInformation, 또는 using Windows.Networking.Sockets) ... – user1667125

+0

나는 그가 bing.com에 웹 요청을하고 돌아 오는 것을 보듯이 일반적으로 의미한다고 생각합니다. –

+0

예, 그게 의미하는 바입니다. –

2

내가 사용

public static bool IsConnectedToInternet() 
{ 
    ConnectionProfile connectionProfile = NetworkInformation.GetInternetConnectionProfile(); 
    return (connectionProfile!=null && connectionProfile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess); 

} 
+0

나를 좋아하지 않는 것 같아요 ... 내가 null인지보고 "=="연산자를 사용할 수 없다고 말했습니다. – user1667125

+0

무엇을 왜 널 테스트합니까? 이 메소드를 코드에 복사하고 호출하면됩니다. –

0

나는 특히 가끔 이더넷이 아닌 윈도우 8 RTM에 ... 아무것도 것 같다 그 이유는 경우에도 사용중인 것으로 나타날 수 알았어, 꽤 괜찮은 작동하는 것 같다 방법이 작업!

그러나, 다음을 수행 나를 테스트하기위한 좋은 선택 ... 내가 네트워크 어댑터가 네트워크에 연결되어있는 경우 IsConnectedToNetwork는(), *하지 * 당신이 가지고있는 경우에 true를 반환 생각

var profile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile(); 

     var interfaceType = profile.NetworkAdapter.IanaInterfaceType; 
      // 71 is WiFi & 6 is Ethernet 
      if (interfaceType == 71 | interfaceType == 6) 
      { 
       // Run Code 
      } 
      /* 3G/Mobile Detect 
      else if (interfaceType == 243 | interfaceType == 244) 
      { 
       // Run Code if you need to use a less quality feature. 
      }*/ 
      else 
      { 
       txtHeader.Text = "Error, Check connection or Try connecting to the Internet..."; 
      }