Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проверить онлайн ли сервер

Ответить
Настройки темы
[решено] Проверить онлайн ли сервер

Аватара для morgan1991

Старожил


Сообщения: 385
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: morgan1991
Дата: 08-07-2009
Здравствуйте!
Скажите пожалуйста, как можно проверить несколько десятков серверов онлайн ли они или нет?
есть IP адрес и порт нескольких скриптов автоита, если к ним коннектиться то это займёт много времени, а как по другому я не знаю...

-------
Хочу научиться писать драйвера на с++
Команда Grand Lions


Отправлено: 17:21, 08-07-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


А почему бы не постариньке? - банально пропинговать?

Цитата morgan1991:
если к ним коннектиться то это займёт много времени »
правда? а помойму быстро. тут даже интересно, что быстрее - пропинговать или к скрипту серверу AutoIt постучаться...

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 17:53, 08-07-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для morgan1991

Старожил


Сообщения: 385
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата proxy:
А почему бы не постариньке? - банально пропинговать? »
Потому что пингуется вся машина, а не по определённому порту. А коннектиться к каждому очень долго, причём иногда если IP оффлайн прога может коннектиться до 10 секунд

-------
Хочу научиться писать драйвера на с++
Команда Grand Lions


Отправлено: 17:58, 08-07-2009 | #3


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
А коннектиться к каждому очень долго, причём иногда если IP оффлайн прога может коннектиться до 10 секунд »
а об offline-е я не очень подумал. Ну в принципе, можно и timeout сделать. запускать скрипт, если не выполнился через 5 сек - завершить его процесс.

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 18:03, 08-07-2009 | #4


Аватара для morgan1991

Старожил


Сообщения: 385
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


не это не подходит, слишком много всего... ) А нельзя ли случайно откуданибудь точное время считывать, но не с локальной машины? Может клиент при входе будет в бд писать точное время входа, а остальные которые будут иногда проверять его статус будут смотреть на время и если оно не обновлялось более 5 минут значит пользователь оффлайн...

-------
Хочу научиться писать драйвера на с++
Команда Grand Lions


Отправлено: 18:18, 08-07-2009 | #5


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
А нельзя ли случайно откуданибудь точное время считывать »
вариант

если проверять порт - то только TCPConnect / UDPOpen

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:24, 08-07-2009 | #6


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 87

Профиль | Отправить PM | Цитировать


Попробуй InternetCheckConnection.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:14, 08-07-2009 | #7


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3030
Благодарности: 996

Профиль | Сайт | Отправить PM | Цитировать


Метод через TCP:

Код: Выделить весь код
$sServer = "forum.oszone.net"

$sResponse = _HTTPGetHeader($sServer, "/")

If StringRegExp($sResponse, "(?i)HTTP/\d.\d (200|301)") Then
    MsgBox(64, "Проверка сервера", "Сервер [" & $sServer & "] on-line.")
Else
    MsgBox(48, "Проверка сервера", "Сервер [" & $sServer & "] НЕ on-line.")
EndIf

Func _HTTPGetHeader($sHost, $sPage)
    TCPStartup()

    Local $sName_To_IP = TCPNameToIP($sHost)
    Local $iSocket = TCPConnect($sName_To_IP, 80)

    If $iSocket = -1 Then
        TCPCloseSocket($iSocket)
        Return SetError(1, 0, "")
    EndIf

    Local $sCommand = "HEAD " & $sPage & " HTTP/1.1" & @CRLF

    $sCommand &= "Host: " & $sHost & @CRLF
    $sCommand &= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0" & @CRLF
    $sCommand &= "Referer: " & $sHost & @CRLF
    $sCommand &= "Connection: close" & @CRLF & @CRLF

    Local $BytesSent = TCPSend($iSocket, $sCommand)
    If $BytesSent = 0 Then Return SetError(2, @error, 0)

    Local $sRecv = "", $sCurrentRecv

    While 1
        $sCurrentRecv = TCPRecv($iSocket, 16)
        If @error <> 0 Then ExitLoop
        If $sCurrentRecv <> "" Then $sRecv &= $sCurrentRecv
    WEnd

    TCPCloseSocket($iSocket)
    TCPShutdown()

    Return $sRecv
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:47, 08-07-2009 | #8


Аватара для morgan1991

Старожил


Сообщения: 385
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата Creat0R:
Метод через TCP: »
Только если $sServer = "forum.oszone.net"
Заменить на $sServer = "fcjhfjhfjfjugv"
То всёравно пишет онлайн

-------
Хочу научиться писать драйвера на с++
Команда Grand Lions


Отправлено: 15:08, 09-07-2009 | #9


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3030
Благодарности: 996

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
Заменить на $sServer = "fcjhfjhfjfjugv"
То всёравно пишет онлайн »
Не могу подтвердить, у меня возвращает НЕ on-line...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 15:32, 09-07-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проверить онлайн ли сервер

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Нужна лучшая программа для просмотра TV онлайн. BROTHERHOOD Хочу все знать 8 24-05-2013 23:59
Интернет - [решено] Не работает онлайн радио YankeeWorm Microsoft Windows Vista 0 24-08-2009 17:33
Win32 API - ICQ как сервер для онлайн игры Turman Программирование и базы данных 3 31-07-2009 12:51




 
Переход