Пинг компьютера подключенного через маршрутизатор

Тема в разделе "Delphi - Сети", создана пользователем Shouldercannon, 24 май 2011.

  1. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Собственно как это сделать? Данный способ не работает.
    Код (Delphi):
    IdIcmpClient1.Host := '192.168.0.1'; // Без порта и с портом не определяет
    IdIcmpClient1.Ping;
    Memo1.Lines.Add('Время до хоста: ' + IntToStr(IdIcmpClient1.ReplyStatus.MsRoundTripTime) + ' ms ' + ComboBox1.Text);
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    :)
    http://www.eomy.net/forum/ping-sredstvami-delphi-vt2290.html
    unit Ping;
    ...
     
  3. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Ни один из способов не работает. Маршрутизатор портит всю картину. Может я рою не в ту сторону, может вообще ненадо зацикливаться на пингующих компонентах. Я опрашиваю через UDPClient сервера, может через него можно определить пинг при помощи вычислений (полученное значение - начальное = нужное значение)? Беда просто.
     
  4. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Как так "не работает"? :)
    У меня работает, проверил специально...
    Маршрутизатор "портить" не может ничего... его дело "поросяче" - взял пакет и "пнул" куда велено было...
    Портить могут фаервол и прокси (если есть таковые)...
    Вы из консоли проверяли команду ping к какому нибудь из ваших серверов? работает?
    Боюсь что (если Вам действительно необходимо узнать время "запрос+отклик") другого пути кроме как "пропинговать" сервер у Вас нет...
    Тут вопрос еще в том "хотят ли" сервера, чтобы их пинговали... :)
    А вот нужен ли Вам именно ринг?
    Например, если Вас устроит время между запросом Вашего UDPClient и моментом когда сервер "скажет" - "ПРИВЕТ! Ты кто?",
    то сделать это действительно можно и без пинга.
    Напимер так:
    Код (Delphi):
     var
    Q,A: TTimeStamp;
    implementation

    //...

    Q := DateTimeToTimeStamp(Now); // в обработчике запроса

    //...
    A := DateTimeToTimeStamp(Now); // в обработчике ответа сервера

    //...
    // там где надо "отчитаться" перед пользователем
    ShowMessage('Я спросил... и мне ответили через ' + IntToStr(Trunc(TimeStampToMSecs(A) - TimeStampToMSecs(Q))) + ' мс.' );
    Вот... но учтите, это ничего общего с ping не имеет... и время в основном зависит не от прохождения пакетов, а от того насколько быстро вам решит ответить сервер... а может у него есть клиенты и поважнее чем Вы... :)
     
  5. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Возможно стоит какая та защита, я забил на это и разрулил с помощью GetTickCount. Перед опросом получаю GetTickCount и при получении ответа получаю GetTickCount далее из второго вычитаю первое, вот и пинг.
     
Загрузка...
Похожие Темы - Пинг компьютера подключенного
  1. ivanivanov2
    Ответов:
    7
    Просмотров:
    2.160
  2. Gamlet
    Ответов:
    1
    Просмотров:
    1.699
  3. rownong
    Ответов:
    2
    Просмотров:
    670
  4. Женька
    Ответов:
    0
    Просмотров:
    805
  5. olga13
    Ответов:
    3
    Просмотров:
    2.766

Поделиться этой страницей