Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-24 08:53:33 |
|||
карма: 0 |
|
Ответов: 100
Рейтинг: -1
|
|||
WinExec + cmd + ping как альтернативу с возможностю динамически изменять лубые параметры в том числе и нужные вам -l, -w.
|
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 747
|
|||
г. Юзер писал(а): Недолго думая, я решил по её шаблону добавить рядомПравильно. Но поскольку у компонента уже есть нижняя точка ByteCount, то твоей точке нужно дать другое имя, например dtByteCount. Тогда в коде: _data_dtByteCount: THI_Event; _data_TimeOut: THI_Event; Для того, чтобы задействовать эти точки, в процедуре THIPing._work_doPing замени _prop_TimeOut на ReadInteger(_Data, _data_TimeOut, _prop_TimeOut) и внеси следующие изменения:
Ещё сюда глянь: [url]forum.html?q=3&p=261754#p261754[/url] |
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-24 08:53:33 |
|||
карма: 0 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-24 08:53:33 |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 747
|
|||
BC := ReadInteger(_Data, _data_dtByteCountIn, _prop_ByteCount); Убери dt
ByteCountIn=Количество байт для отправки на удалённый хост|4|1
Последняя цифра обозначает код типа данных. В коде ни на что не влияет, в среде точка выделяется другим цветом, подсказывая, какие данные на неё следует подавать.
TimeOutIn=Время ожидания ответа от сервера|4|1 г. Юзер писал(а): берёт данные из указанных в её скобках переменных с приоритетным выбором первыхг. Юзер писал(а): чтобы элемент брал инфу сразу из нескольких источников, ему нужно создать переменную типа этой "BC" |
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-24 08:53:32 |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 747
|
|||
Могу предположить, что одна из проблем - в использовании имени хоста вместо IP адреса (в коде есть вызов gethostbyname()).
Во-первых, само определение адреса по DNS занимает некоторое время, во-вторых, запись DNS может кешироваться в системе или в провайдера, поэтому последующие вызовы могут быть быстрее. То есть, нужно переделать компонент на использование IP, а не доменного имени (а IP можно получать с помощью компонента Host) Кроме того, можно в компоненте вынести функции IcmpCreateFile() и IcmpCloseHandle(hIP) за пределы _work_doPing, может они тоже занимают время. И также сходи по той ссылке, что я выше давал - там есть модификация этого компонента для лучшего определения ошибок. |
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-24 08:53:32 |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 747
|
|||
Выложи схему, Ping.ini и hiPing.pas.
|
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-24 08:53:32 |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 747
|
|||
Проверил. Задержка всегда примерно одинаковая во всех попытках для разных сайтов. Поэтому проблема не в компоненте, а в твоём интернете.
г. Юзер писал(а): Если указать очень низкий таймаут (например, 1 мс), элемент будет ждать ответа сервера всё равно куда дольше указанногоНо время, которое получается в результате команды ping имеет другую природу (измеряется где-то на уровне сетевого интерфейса и его драйверов), поэтому показатель пинга более точный. Схему можно так сделать:
Можешь внести следующие изменения:
|
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-24 08:53:32 |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 747
|
|||
У меня нет скачка пинга - всё время выдаёт примерно одинаковое значение (170 +-1 мс). Так что таки в модеме.
Соотношение ошибок похожее. г. Юзер писал(а): Но проблема с таймаутом наверняка в элементе |
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-24 08:51:02 |
|||
карма: 0 |
|