Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ping超时在Xamarin android表单应用程序中不起作用_C#_Xamarin_Xamarin.android_Xamarin.forms_Ping - Fatal编程技术网

C# Ping超时在Xamarin android表单应用程序中不起作用

C# Ping超时在Xamarin android表单应用程序中不起作用,c#,xamarin,xamarin.android,xamarin.forms,ping,C#,Xamarin,Xamarin.android,Xamarin.forms,Ping,我正在使用System.Net.NetworkInformation.Ping类对某个Ip进行Ping。我正在使用Xamarin和visual Studio 2015开发一个Android表单应用程序。这是我正在使用的代码 int timeout = 100; Ping ping= new Ping(); PingReply reply = ping.Send("209.197.25.1", timeout); if (reply != null &&

我正在使用System.Net.NetworkInformation.Ping类对某个Ip进行Ping。我正在使用Xamarin和visual Studio 2015开发一个Android表单应用程序。这是我正在使用的代码

   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#控制台应用程序上运行相同的代码,它在那里工作得非常好。我也尝试过不同的服务器,结果是一样的。有人能告诉我我做错了什么吗?
有些人认为我正在使用此代码检查目的地是否可用,但我没有,我对从一台电脑到另一台电脑的往返时间感兴趣。

@Umer Javaid我尝试了此插件,发现它工作不正常。这个插件基于Java.InetAddress.GetByName(主机).isRecable(msTimeout);而且此方法存在问题和问题

ping.Send()在模拟时总是失败,因此您需要通过Java运行时命令进行ping,只需添加以下内容:

Java.Lang.Process p1 = Java.Lang.Runtime.GetRuntime().Exec("ping -c 1 www.stackoverflow.com");
int returnVal = p1.WaitFor();

如果正常,您将得到returnVal=1;如果出错,您将得到returnVal=2,仅此而已。

是否绝对需要您这样执行ping?还有一个插件可以告诉你是否可以访问某个地址。检查并尝试webrequest(如果可能的话)而不是pingICMP可能不会在所有情况下都能很好地工作(转发可能会被禁用),因此如果您确实想测试可用性,请尝试其他方法。@GeraldVersluis我想找出数据包到达服务器并返回所需的时间,因此我使用ping。我不确定是否有其他类也能做到这一点。“模仿时总是失败”拯救了我的理智。Tanks通过向qemu网络添加第二个网络来解决这一问题是一个复杂的解决方案,qemu网络支持ICMP: