DeviceNetworkInformation:哪个是哪个?

时间:2012-03-02 12:28:25

标签: windows-phone-7 windows-phone-7.1

我想检查是否有任何互联网连接可用 - 即我可以启动预期会成功的网络请求。

IsCellularDataEnabled - 如果有GPRS / 3G /等可用,这是真的吗?
IsNetworkAvailble - 如果可以使用VOICE CALLS,这是否属实,或者这也与互联网有关?
IsCellularDataRoamingEnabled - 我是否应该关注这一点? (我知道数据漫游是什么......)
IsWifiAvailable - 如果这是假的,我仍然可以从3G上网。

所以我正在寻找的是:

if (/*something*/){ //you can use the internet
}

感谢

(编辑:我没有随时可用的设备,否则我只是尝试一下:))

3 个答案:

答案 0 :(得分:2)

  

if(NetworkInterface.GetIsNetworkAvailable()){

     

}

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface.getisnetworkavailable.aspx

答案 1 :(得分:2)

IsNetworkAvailable 是真的,如果有某种数据连接可用,无论哪个(GPRS,3G,漫游,WiFi或通过USB线)。

如果通过移动数据连接连接手机,则

IsCellularDataEnabled 为true。它不会向您提供有关语音呼叫的任何状态,只会提供数据。

IsCellularDataRoamingEnabled :用户通过第三方提供商(漫游)通过移动数据连接进行连接。您应该只使用最少量的流量,因为漫游数据通常对用户来说很昂贵。 (因此你可以检查这个状态)

如果您通过WiFi连接,则

IsWifiAvailable 为真。如果为false,则可能通过3G等进行移动数据连接。

因此,如果您只想知道如果存在某种连接,则可以使用 IsNetworkAvailable - 所有其他状态仅向您提供有关何种连接的详细信息。

答案 2 :(得分:0)

您的问题包含错误的假设。

您想知道是否存在连接,因此您的请求可能会成功。但是,只有反对派才是真实的。你只能知道,如果没有连接,请求肯定会失败。

即使有可用的外部网络连接,也有很多原因可能无法成功提供网络请求。

即使有连接,您必须代码才能处理请求失败。

即使存在连接,也可以阻止请求成功的事情:

  • 阻止请求的代理服务器或防火墙
  • 连接到无法访问目标服务器的本地网络
  • 导致请求超时的慢速网络连接
  • 目标服务器已关闭/离线/不​​可用
  • 服务器上的错误
  • 等。 ...