Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Ping

Автор: Separator 3.2.2011, 14:30

Здравствуйте,
как отправить ping запрос и получить ответ с помощью QT?
Желательно использовать только стандартные библиотеки.

Автор: Dovgon 3.2.2011, 15:13

Посмотри сдесь
http://doc.qt.nokia.com/qt-maemo/network-network-chat-connection-cpp.html
может поможет.

Автор: igor_bogomolov 3.2.2011, 15:28

Цитата(Separator @ 3.2.2011, 14:30) *
как отправить ping запрос и получить ответ с помощью QT?
Только через QProcess.

Как то так
void ConnectManager::startPingProces()
{
...
        ping_timer = new QTimer(this);
        connect(ping_timer, SIGNAL(timeout()), this, SLOT(enginePing()));
        ping_timer->start(100);
...
        ping_process = new QProcess(this);
        connect(ping_process,SIGNAL(finished(int,QProcess::ExitStatus)),
                this, SLOT(enginePingFinished(int,QProcess::ExitStatus)));
        enginePing();
}

void ConnectManager::enginePing()
{
   ...
#ifdef Q_OS_WIN32
    ping_process->start(QLatin1String("ping  -n 1 \"") + currentPingHost  + QLatin1String("\"") );
#else
    ping_process->start(QLatin1String("ping  -c 1 -W 1 \"") + currentPingHost  + QLatin1String("\"") );
#endif
}

Автор: kwisp 3.2.2011, 16:08

если запускать ping через QProcess может прав не хватить.
ping использует ICMP которая требует определённых прав.

Автор: Dovgon 3.2.2011, 17:22

если есть привилегии то это будет лучше всего
http://www.prog.org.ru/index.php?topic=9064.msg51459#msg51459
можно глянуть еще вот это
http://qt.shamangrad.net/doku.php?id=%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D1%8F_%D0%BF%D0%B8%D0%BD%D0%B3%D0%B0_%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2

Автор: Kagami 3.2.2011, 23:54

Цитата(kwisp @ 3.2.2011, 16:08) *
если запускать ping через QProcess может прав не хватить.
ping использует ICMP которая требует определённых прав.

Если пытаться самому открыть сокет для отправки/приема ICMP, то прав точно не хватит. Использовать утилиту ping через QProcess самое эффективное решение.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)