跟踪路由结果
Traceroute Results
我一直在查看来自 a blog post 的 Traceroute 代码。
问题是当我尝试将结果转换为 C# 窗体时。我唯一得到的是一行中完整的 IP;跃点、毫秒和 IP。我试图获取列表或能够将(字符串(跟踪路由到 172.217.7.174,最多 30 跳:)跳数、毫秒和 IP 地址)添加到 ListView。
private async void btnAwait_Click(object sender, EventArgs e)
{
var Results = await asyncTraceRoute.TryTraceRouteInternalAsync("google.com", 30);
txtTraceroute.Text = Results.Message;
}
将不胜感激。
该方法的名称 (TryTraceRouteInternalAsync
) 实际上暗示某些操作的方式不正确。
此方法只调用一次 ping,这就是为什么你只得到一个结果。
您需要调用的实际方法是 TryTraceRouteAsync
,但我强烈感觉您选择了另一个方法,因为它 returns 是一个可访问的对象,带有字符串消息 属性.
如果执行以下操作,TryTraceRouteAsync
方法将同时异步调用 TryTraceRouteInternalAsync
(MAX_HOPS = 15) 次并将所有结果写入 streamWriter。
您只需调用此方法即可获得您要查找的所有结果:
private async Task<string> TraceRt()
{
MemoryStream memoryStream = new MemoryStream();
StreamWriter streamWriter = new StreamWriter(memoryStream);
await TraceRoute.TryTraceRouteAsync("google.com.tr", streamWriter);
streamWriter.Flush();
memoryStream.Position = 0;
StreamReader stringReader = new StreamReader(memoryStream);
return stringReader.ReadToEnd();
}
我一直在查看来自 a blog post 的 Traceroute 代码。
问题是当我尝试将结果转换为 C# 窗体时。我唯一得到的是一行中完整的 IP;跃点、毫秒和 IP。我试图获取列表或能够将(字符串(跟踪路由到 172.217.7.174,最多 30 跳:)跳数、毫秒和 IP 地址)添加到 ListView。
private async void btnAwait_Click(object sender, EventArgs e)
{
var Results = await asyncTraceRoute.TryTraceRouteInternalAsync("google.com", 30);
txtTraceroute.Text = Results.Message;
}
将不胜感激。
该方法的名称 (TryTraceRouteInternalAsync
) 实际上暗示某些操作的方式不正确。
此方法只调用一次 ping,这就是为什么你只得到一个结果。
您需要调用的实际方法是 TryTraceRouteAsync
,但我强烈感觉您选择了另一个方法,因为它 returns 是一个可访问的对象,带有字符串消息 属性.
如果执行以下操作,TryTraceRouteAsync
方法将同时异步调用 TryTraceRouteInternalAsync
(MAX_HOPS = 15) 次并将所有结果写入 streamWriter。
您只需调用此方法即可获得您要查找的所有结果:
private async Task<string> TraceRt()
{
MemoryStream memoryStream = new MemoryStream();
StreamWriter streamWriter = new StreamWriter(memoryStream);
await TraceRoute.TryTraceRouteAsync("google.com.tr", streamWriter);
streamWriter.Flush();
memoryStream.Position = 0;
StreamReader stringReader = new StreamReader(memoryStream);
return stringReader.ReadToEnd();
}