c# - 对于 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 时间吗?任何形式的帮助将不胜感激。
此应用程序的平台和版本:
- Xamarin.Mac 6.20.2
- .Net 框架 4.8
- Mono JIT 编译器版本 6.12.0.93
- macOS Catalina 版本 10.15.2
解决方案
推荐阅读
- android - 使 TextView 可在末尾使用省略号进行调整,以获得在辅助功能设置中选中的最大字体大小
- android - 如何在默认相机应用程序上添加像剪影这样的叠加视图
- sql - SQL 表值函数 - 根据参数值从“WITH”返回某些数据
- javascript - 如何基于集群设置树状图中的颜色?
- cmake - 由于库冲突,CMake 无法生成搜索路径
- python-3.x - 导入 tensorflow 时发生错误
- php - QT:根据 PHP 代码在 C++ 中进行 AES-256-CBC 加密/解密
- ios - Swift UISplitViewController MasterViewController 设置宽度不起作用
- sql-server - 如何处理部署 dacpac 的 SQLPackage.exe 完整事务日志错误?
- statistics - 识别忠诚度奖励计划中的滥用用户