Я использую класс 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#, и он отлично работает там. Я также пробовал разные серверы, и результат такой же. Может ли кто-нибудь сказать мне, что я делаю неправильно? Некоторые люди поняли, что я использую этот код, чтобы проверить, доступно ли место назначения, но я не хочу, меня интересует время в оба конца от одного компьютера к другому.
Вам абсолютно необходимо, чтобы вы пинговали так? Существует также плагин, который может сказать вам, доступен ли определенный адрес. Проверьте это [здесь] (https://github.com/jamesmontemagno/ConnectivityPlugin) –
попробуйте webrequest, если возможно, вместо ping – giammin
ICMP может не работать очень сильно во всех случаях (пересылка может быть отключена), поэтому, если вы действительно хотите для проверки доступности, попробуйте другие подходы. –