2016-08-02 6 views
0

Я использую класс System.Net.NetworkInformation.Ping для ping определенного Ip. Я работаю над приложением Android Form, используя Xamarin и visual Studio 2015. Вот код, который я использую.Тайм-аут Ping не работает в приложении формы андроида Xamarin

int timeout = 100; 
    Ping ping= new Ping(); 
    PingReply reply = ping.Send("209.197.25.1", timeout); 

    if (reply != null && reply.Status == IPStatus.Success) 
     return reply.RoundtripTime; 
    if (reply != null && reply.Status == IPStatus.TimedOut) 
     return -1; 

Одна вещь, что если мой WiFi подключен, то я никогда не получить тайм-ауту независимо от того, как мало я дать значение тайм-аута (по цене от 1), а reply.RoundtripTime больше, чем тайм-аут (почти 300 для этого сервера из моего местоположения). Но если мой WiFi выключен, я получаю тайм-аут в соответствии с указанным мной временем.

Я также пытался запустить тот же код на консольном приложении C#, и он отлично работает там. Я также пробовал разные серверы, и результат такой же. Может ли кто-нибудь сказать мне, что я делаю неправильно? Некоторые люди поняли, что я использую этот код, чтобы проверить, доступно ли место назначения, но я не хочу, меня интересует время в оба конца от одного компьютера к другому.

+2

Вам абсолютно необходимо, чтобы вы пинговали так? Существует также плагин, который может сказать вам, доступен ли определенный адрес. Проверьте это [здесь] (https://github.com/jamesmontemagno/ConnectivityPlugin) –

+0

попробуйте webrequest, если возможно, вместо ping – giammin

+0

ICMP может не работать очень сильно во всех случаях (пересылка может быть отключена), поэтому, если вы действительно хотите для проверки доступности, попробуйте другие подходы. –

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^