Результаты трассировки - PullRequest
0 голосов
/ 16 марта 2020

Я искал код 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;
}

Справка на это будет принята с благодарностью.

1 Ответ

0 голосов
/ 16 марта 2020

Название метода (TryTraceRouteInternalAsync) фактически указывает на то, что что-то делается неправильно.

Этот метод вызывает только один пинг, и поэтому вы получаете только один результат.

Фактический метод, который вам нужно вызвать, это TryTraceRouteAsync, но у меня есть сильное ощущение, что вы выбрали другой, потому что он возвращает доступный объект со строковым свойством Message.

Если вы это делаете ниже метод 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();
    }
...