跟踪路由结果

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();
    }