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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ping в c++ 
V
    Опции темы
semibug
Дата 31.12.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



В программе на C++ необходимо пинговать несколько заданных в файле конфигурации серверов.

Первое, что пришло на ум - использовать вызов system( "ping"  ); с соответствующими параметрами и обрабатывать её выход, а есть ли возможность использовать, например, какие-то библиотеки или функции ядра?
В linux новичок, не уловлю стратегию, возможно через программу ping и есть самое верное решение.


PM   Вверх
triclosan
Дата 1.1.2011, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: нет
Всего: 12



Цитата(semibug @  31.12.2010,  22:36 Найти цитируемый пост)
использовать вызов system( "ping"  );

тогда уже дергать sh-скрипт, где все сконфигурено



Цитата(semibug @  31.12.2010,  22:36 Найти цитируемый пост)
использовать, например, какие-то библиотеки или функции ядра?

Можно сторонние либы поискать. Имхо, если стандартно ядром - то только самому посылать ICMP  и принимать ответ.
PM MAIL   Вверх
semibug
Дата 3.1.2011, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Использовал библиотечку liboping, получилось удобно.
Вопрос решен.
PM   Вверх
phpsc
Дата 12.1.2011, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 22.11.2010

Репутация: нет
Всего: 0



выложи сюда исходный код
--------------------
Социальная сеть
PM MAIL   Вверх
semibug
Дата 12.1.2011, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



phpsc, как то так:

Код


#include <oping.h>

    bool ping( std::string host, int timeout )
    {
        bool ret = false;

        pingobj_t *pingobj = ping_construct();

        if ( pingobj == NULL )
            return ret;

        for (;;)
        {
            double timeout_sec = ( ( double ) timeout ) / ( double ) ( 1000.0 );
            if ( ping_setopt( pingobj, PING_OPT_TIMEOUT, &timeout_sec ) )
                break;

            if ( ping_host_add( pingobj, host.c_str() ) )
                break;

            if ( ping_send( pingobj ) <= 0 )
                break;

            ret = true;

            break;
        }

        ping_destroy( pingobj );

        return ret;
    }


Добавлено через 3 минуты и 51 секунду
Да, и ещё, если сеть не доступна (более точно сервер DNS), а в качестве хоста указано доменное имя (а не IP), то параметр timeout роли не играет, на вызове ping_host_add будет достаточно длительное ожидание. В моем случае вынес это дело в отдельный поток, и контролировал время, с последнего удачного пинга.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.2419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.