Russian Qt Forum
Июнь 16, 2024, 00:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как пропинговать сервер  (Прочитано 17666 раз)
Mirael Karamir
Гость
« : Июнь 27, 2007, 13:54 »

Привет всем! Кто нибудь может привети пример кода, как можно из Qt пропинговать другой компьютер в сети?
Записан
AcerExtensa
Гость
« Ответ #1 : Июнь 27, 2007, 13:59 »

Код:

QString program;
QStringList arguments;
program="ping";
arguments <<"127.0.0.1";
QProcess myProcess;
myProcess.start(program, arguments);
myProcess.waitForFinished();
myProcess.deleteLater();
Записан
Mirael Karamir
Гость
« Ответ #2 : Июнь 27, 2007, 14:04 »

спасибо, а как узнать результат??? (доступен сервер или нет?)
Записан
AcerExtensa
Гость
« Ответ #3 : Июнь 27, 2007, 14:09 »

Код:
te->append( QString::fromLocal8Bit(myProcess.readAllStandardOutput())); 
te->append( QString::fromLocal8Bit(myProcess.readAllStandardError()));

te - Поле QTextEdit например.

добавлено спустя 2 минуты:

 Ну а если результат не надо выводить а только вывести доступен или нет то можно забацать через Регулярные Выражения RegExp форма ответа пинга ведь известна.
Записан
Mirael Karamir
Гость
« Ответ #4 : Июнь 27, 2007, 14:16 »

О... а можно второй вариант поподробнее??? Просто никогда не работал ни с QProcess ни с RegExp...
Записан
AcerExtensa
Гость
« Ответ #5 : Июнь 27, 2007, 14:19 »

Уменя у самого RegExp храмает........ но попробуй........ пинг под Виндой или под Иксами?
Записан
Mirael Karamir
Гость
« Ответ #6 : Июнь 27, 2007, 14:24 »

Как минимум и под то, и под другое. Может как товсе можно сделать через сокеты?
Записан
AcerExtensa
Гость
« Ответ #7 : Июнь 27, 2007, 14:41 »

Можно и наверное гораздо лутше.......

добавлено спустя 12 минут:

 Думаю надо смотреть в эту сторону:

Цитировать

bool QTcpServer::waitForNewConnection ( int msec = 0, bool * timedOut = 0 )
Waits for at most msec milliseconds or until an incoming connection is available. Returns true if a connection is available; otherwise returns false. If the operation timed out and timedOut is not 0, *timedOut will be set to true.
This is a blocking function call. Its use is disadvised in a single-threaded GUI application, since the whole application will stop responding until the function returns. waitForNewConnection() is mostly useful when there is no event loop available.
The non-blocking alternative is to connect to the newConnection() signal.
See also hasPendingConnections() and nextPendingConnection().


глянь Тролевские доки.
Записан
Mirael Karamir
Гость
« Ответ #8 : Июнь 27, 2007, 14:45 »

Моя задача не сервер написать, а переодически проверять есть ли связь с сервером моей компании, и стягивать с него кой-какие данные.
Записан
AcerExtensa
Гость
« Ответ #9 : Июнь 27, 2007, 14:57 »

ну так с этим и сможеш проверить: "Returns true if a connection is available; otherwise returns false" задаеш таймаут в пару секунд, если конект прошел делаеш что тебе надо, если нет то пинг не прошел............

глянь в доки, может там что попроще есть....... мне просто это на глаза попалось.........
Записан
J. Bond
Гость
« Ответ #10 : Июнь 28, 2007, 08:29 »

QAbstractSocket::connectToHost()
а потом QAbstractSocket::waitForConnected();
Записан
AAXEE
Гость
« Ответ #11 : Март 24, 2009, 20:55 »

1.5 года прошло. Ничего нового в Qt, касаемо пинга не появилось?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Март 24, 2009, 21:31 »

вроде нет
Записан

Юра.
Ruzzz
Гость
« Ответ #13 : Ноябрь 02, 2009, 23:52 »

Для пинга нужен ICMP, а он вроде в nix'ах только из под рута?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.104 секунд. Запросов: 22.