Конференция "Базы" » Как проверить наличие SQL-сервера Firebird ? [D7, IB6.x]
 
  • Сергей М. © (22.06.09 12:39) [20]
    И все-таки вопрос : нафига стучать в дверь ?)

    Ну ответил тебе сосед из-за двери "Кто там ?", и что ?

    Ответить "Сто грамм", чтобы тебе открыли дверь, прямо сейчас ты не сможешь, тебе ж еще в ларек нужно сбегать за пузырьком - не с пустыми же руками в гости ходить)

    А прибежав из ларька с пузырьком ты обнаружишь, что на тот же стук никакого "ктотама" из-за двери не слышно - соседа срочно приспичило уйти по своим делам)
  • Медвежонок Пятачок © (22.06.09 12:48) [21]
    щас по итогу окажется, что все это надо только для того, чтобы в случае если тама никого нет, но должно быть, - получить письмо, подойти к машине и мышкой запустить упавший сервис.

    а других путей конечно же нет.

    ну или он хочет собрать статистику доступности в сети серверов за год.
    и продать ее исследователям.
  • b/@. © (22.06.09 12:51) [22]

    > PEAKTOP ©   (22.06.09 12:36) [19]

    У нас нет таких сложных случаев.
    Если Firebird-сервер работает, то он работает на порту по-умолчанию, без файрволлов, проксей и т.п.


    > Сергей М. ©   (22.06.09 12:39) [20]

    Это своеобразный агент для автонастройки клиента. Сам клиент тяжелый, да и ждать пока истечет таймаут у
    IBDatabase.Open();

    тоже не хочеться.
    Но серверов может быть несколько, и т.к. клиент работает только на чтение из БД, то к какому из серверов подключаться без разницы. Нужно определить первый в списке из ответивших, и уже для него запускать клиента.
  • Медвежонок Пятачок © (22.06.09 12:56) [23]
    таймаут-то большой не от того, что сервер долго думает, а от того, что в строке подключения имя хоста а не адрес, а хост выключен.
  • Медвежонок Пятачок © (22.06.09 12:58) [24]
    то есть твоя мудрая проверка самописным классом даст точно такой же таймаут.
  • Сергей М. © (22.06.09 13:02) [25]

    > b/@. ©   (22.06.09 12:51) [22]


    Тогда вполне достаточной будет попытка коннекта к 3050-му порту без акта прикл.обмена.

    Если на этом порту хоть кто-то слушает, т.е попытка коннекта по трансп.протоколу была успешной, следом можно пытаться выполнить IBDatabase.Open, т.е. попытку коннекта по прикл.протоколу.

    Если там слушает кто угодно, но не FB-сервер, IBDatabase.Open тут же возбудит соотв.исключение.
  • Медвежонок Пятачок © (22.06.09 14:02) [26]
    от торомозов резолва, если виноват он, это не поможет.
  • Сергей М. © (22.06.09 14:25) [27]

    > от торомозов резолва


    Ну это отдельная песня, никак не связанная с изнач.вопросом
  • makz (24.06.09 17:08) [28]

    > Это своеобразный агент для автонастройки клиента. Сам клиент
    > тяжелый, да и ждать пока истечет таймаут у IBDatabase.Open();
    >  тоже не хочеться.

    Незафигом ждать истечения таймаута, вместо того чтоб послать запрос на следующий адрес.
 
Конференция "Базы" » Как проверить наличие SQL-сервера Firebird ? [D7, IB6.x]
Есть новые Нет новых   [134473   +33][b:0][p:0.001]