不仅验证互联网连接,还要验证它是否正在传递数据-XAMARIN

时间:2018-11-08 10:40:27

标签: c# xamarin xamarin.forms xamarin.android

我在验证互联网连接时遇到问题。请参阅我的代码中有此验证信息:

  if (CrossConnectivity.Current.IsConnected)
  {
     ...
  }

它可以工作,但是我认为这种情况无法解决,我在办公室隔壁有一家购物商店,进入购物商店,并且该设备仅与购物WI-FI连接,但是没有通过数据,因为需要登录会话才能从购物中获得免费的WI-FI。

所以我在简历中的问题是,有没有一种方法,不仅可以验证设备是否连接到互联网,还可以验证设备是否通过连接传递数据?

3 个答案:

答案 0 :(得分:1)

我没有尝试此解决方案,但可能会对您有所帮助。

uri

if (CrossConnectivity.Current.IsConnected) { if (ConnectGoogle()) { return true; } else { // } } 方法

ConnectGoogle

答案 1 :(得分:1)

您可以使用System.Net.WebClient并测试打开/读取URL。另外,另一种方法可能是对理论上永远不会脱机的资源执行ping操作。即Google。

类似:

if (CrossConnectivity.Current.IsConnected)
{
    try { 
        Ping ping = new Ping();
        String host = "google.com";
        byte[] buffer = new byte[32];
        int timeout = 1000;
        PingOptions pingOptions = new PingOptions();
        PingReply reply = ping.Send(host, timeout, buffer, pingOptions);
        if (reply.Status == IPStatus.Success){
            // Your code here...
        }
    }
    catch (Exception) {
        return false;
    }
}

希望有帮助。

答案 2 :(得分:0)

谢谢大家,我看到所有答案都适合我的情况,但是我从https://jamesmontemagno.github.io/ConnectivityPlugin/PingaHost.html使用了这种方法,您可以打开它,也可以在这里查看它:

 var verificaPassagemDados = await CrossConnectivity.Current.IsRemoteReachable("google.com");

感谢@sme