首页 > 解决方案 > 对于 macOS Xamarin.Mac,Ping.SendPingAsync 无法正常工作

问题描述

我尝试使用Ping.SendPingAsync(host, timeOut) API 获取域的 ping 时间。与我在终端中观察到的值相比,PingReply.RoundtripTime 值似乎总是更高。

更准确地说,对于同一个域google.com,当我在 macOS 上调用方法时,reply.RoundtripTime 为 76 到 78 毫秒SendPingAsync,而当我向终端发送命令时,该值为 54 到 56 毫秒。

Terminal command: Ping google.com
Response: 64 bytes from 74.125.24.113: icmp_seq=156 ttl=104 time=54.082 ms

这是我的完整测试代码:

private async Task PingAsync()
{
    for(int i=0; i<100; i++)
    {
        var ping = new Ping();

        PingReply reply = await ping.SendPingAsync("google.com", 500);

        if (reply.Status == IPStatus.Success)
        {
            Console.WriteLine("Address: {0}", reply.Address.ToString());
            Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);
        }
        else
        {
            Console.WriteLine("Failed to get ping detials");
        }

        await Task.Delay(1000);
    }
}

注意:我为我的 win 项目 (WPF) 使用了相同的代码,它按预期工作,响应时间非常接近 Windows API 响应和终端 ping 时间。

你能建议我如何在我的 Xamarin.Mac 应用程序上获得 ping 时间吗?任何形式的帮助将不胜感激。

此应用程序的平台和版本:

标签: c#macoscocoaxamarin.mac

解决方案


推荐阅读