如何检查互联网连接?

时间:2018-12-19 02:45:39

标签: xamarin xamarin.forms

我使用ConnectivityPlugin(CrossConnectivity.Current.IsConnected字段)检查Internet连接。问题在于它仅检查是否按下了Internet连接按钮。也就是说,如果我已连接到移动网络,但本身没有Internet(例如,来自运营商的问题),则针对这种情况的CrossConnectivity.Current.IsConnected字段将返回true(尽管没有连接)。问题:如何检查是否可以访问互联网?谢谢

3 个答案:

答案 0 :(得分:0)

您可以使用Device.StartTimer(TimeSpan,Func)方法。

Device.StartTimer(TimeSpan.FromSeconds(1), () =>
{
        //insert checking of internet connection
}

答案 1 :(得分:0)

假设“ google.com”始终处于运行状态:

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)

我建议将以下代码添加到App.xaml.cs类的OnStart方法中,并加以解决。

  CrossConnectivity.Current.ConnectivityChanged += (sender, e) =>
  {
      if (!CrossConnectivity.Current.IsConnected)
      { 
         Console.WriteLine("Internet connectivity lost");
      }
  };