Проект с использованием Indy

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Проект с использованием Indy

Сообщение beria » 12.01.2017 11:48:33

Ustas писал(а):Я в Indy ноль. Поэтому, прошу совета, может есть другой компонент для пинга, что бы не требовалось таких прав?


synapse

uses
pingsend;
var
p : TPINGSend;
begin
p := TPINGSend.Create;
writeln(p.Ping('yandex.ru'));
p.free;
end.
win 10x64 корпоративная, обычный юзер. результат - true;
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Проект с использованием Indy

Сообщение Vadim » 12.01.2017 12:41:39

Как-то давно я тоже пробовал Инди-пинг и с тем же успехрм. :-)
В дополнение к вышесказанному.
Вот эти компоненты:
http://www.ararat.cz/synapse/
там есть модуль pingsend.pas. Можно делать пинги как с помощью специального класса (см. пример выше), так и простой функцией (в этом случе класс просто скрыт). Административных прав не нужно.
Код: Выделить всё
Uses pingsend;
Var
  ms: Integer;
Begin
  ms:=PingSend('127.0.0.1');
  WriteLn('Отклик хоста в милисекундах: ', ms);
End.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Проект с использованием Indy

Сообщение Ustas » 12.01.2017 14:11:55

beria, Vadim - Спасибо!
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: Проект с использованием Indy

Сообщение olegy123 » 12.01.2017 16:37:15

смотри в CheckForDisconnect
http://forum.sources.ru/index.php?s=59b ... 4972&st=15
там нужно еще вам разобратся с keepalive и с другими настройками сессий для TCP сокетов. Там есть параметры из-за которых сокеты могут висеть днями, а с ними висит и инди сессия.. Знать это нужно обязательно для высоконагруженных серверов..

Ism писал(а):А вообще Indy вещь глючная, в свое время я от него отказался

сама Indy не глючная, его нужно правильно готовить.

Добавлено спустя 37 минут 59 секунд:
Так как я сам прошел этот путь напишу в чем преимущества и недостатки:
Инди прост для новичков, он мощный инструмент, который позволяет с помощью двумя-тремя кликами в своем приложении иметь им TCP/IP функционал. Программисту уже можно идти дальше - что принять и что отправить..
Вы даже можете к сессии прикрепить свой класс и там описать более сложный протокол: авторизация, хранения данных о клиенте(ID клиента) взаимодействия с базами данных и прочее.. я даже писал администрирование - сессия которая управляла другими сессиями, видела их состояние, могла отключать, послать сообщение(чат).. Т.е. без знания о потоках - вы реализуете многопоточный сервис.

У меня было не более 100 клиентов.. Синтетический тест (тестировал на утечку памяти, стабильность работы) более 10000 одновременных подключений..

Добавлено спустя 6 минут 3 секунды:
Инди оптимален для малых и средних проектов..

для высконагруженных - там важно работать с самими сокетами, в том числе в неблокирующем режиме.. своими силами реализовывать мултипоточность и прочее моменты которые требуют глубоких знаний и опыт..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Проект с использованием Indy

Сообщение beria » 13.01.2017 10:50:10

Можно проще ставить без оффсайта. Из стандартной поставки Лазаруса поставить онлайн менеджер пакетов. Там выбрать synapse40.1 и установить. Все!
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Проект с использованием Indy

Сообщение Ustas » 13.01.2017 11:06:58

А в pingsend по какому параметру гарантированно определяется, что соединения нет. Потому как, по не доступному адресу PingTime может показать количество милесекунд и -1 и 100. А ReplyErrorDesc - "address unreachable" или "unknown error".
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: Проект с использованием Indy

Сообщение beria » 13.01.2017 13:21:58

Ustas писал(а):по какому параметру


{:Time between request and reply.}
property PingTime: Integer read FPingTime;

Оно?

Я не трогал. У меня и так все что нужно с дефолтом отлично работает опрашивая сервера
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Проект с использованием Indy

Сообщение Ustas » 13.01.2017 15:45:57

Я выше написал, что PingTime тоже бывает ерунду показывает. Ну, наверное, все результаны (время, текстовые сообщения) основаны на одном событии. Поэтому, мой прыдыдущий вопрос не коррктен.
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: Проект с использованием Indy

Сообщение beria » 13.01.2017 19:53:47

Ustas писал(а):снованы на одном событии.


Первое что я бы сделал , если надо много последовательных обращений и исходя из его специфики Синапса, все его критические вызовы поместил в отдельный программный поток (в FPC есть для этого как стандартные так и куча альтернативных средств) и управлял с помощью отправки-приема внешних событий. Не так? Вроде среди примеров есть именно такое для пинговалки, хотя исключительно для какого-то Дельфи, поэтому я не проверял...
Моя задача была проще, всего один адрес проверять, и дефолт полностью справлялся даже в основном программном потоке...
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

Рейтинг@Mail.ru