Что нового

[Сеть, интернет] Проверка серверов на доступность

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
in-com
Попробуйте проверять статус, возвращаемый заголовком. Если "Ок 200" то сервер доступен, иначе нет.
 
Автор
I

in-com

Новичок
Сообщения
28
Репутация
0
Garrett
Ваш скрипт для поиска Counter-Strike серверов работает. Я в него еще хотел добавить поддержку ftp и http серверов, но что-то не получается. В чем может быть ошибка?

Код:
#include <Array.au3>
Global $t = 0
Dim $iCount = 0
Dim $iIP = InputBox('On-Line Scaner!', 'Введите ip-адрес сервера', '93.81.248.130')
Dim $aPort[2] = [26000,29000]
Dim $aPort[3] = [21,80]
If @error <> 0 Then Exit
	
OnAutoItExitRegister("_Cleanup()")
AdlibRegister("_Timer", 300)

TCPStartup()
UDPStartup()

For $i = $aPort[0] To $aPort[1]
    If _Status($iIP, $i) Then
        $iCount += 1
        $iMsg = MsgBox(262212, "On Line!", "Сервер найден!" &@LF & $iIP &":"& $i)
        If $iMsg = 7 Then
            ExitLoop
        EndIf
    EndIf
Next
MsgBox(262208, "Выполнено!", "Поиск серверов закончен!" & @LF & "Найден (" & $iCount & ") сервер.")

Func _Status($iIP, $iPort)
    $_Socket = TCPConnect($iIP, $iPort)
    $_Socket = UDPOpen($iIP, $iPort)
        If @error <> 0 Then Exit
    $_Status = UDPSend($_Socket, "0xFFFFFFFF6765746368616C6C656E6765")
    If $_Status = 0 then
        MsgBox(16, "Ошибка!", "Ошибка отправки сообщения: " & @error)
        Exit
    EndIf
    
    Do
        $iData = UDPRecv($_Socket, 100, 1)
        If $iData <> "" Then
            Return 1
        EndIf
    Until $t = 1
    Return 0
EndFunc

Func _Timer()
    $t = 1
    Return $t
EndFunc

Func _Cleanup()
    AdlibUnRegister("_Timer()")
    UDPCloseSocket($_Socket)
    TCPCloseSocket($_Socket)
    TCPShutdown()
    UDPShutdown()
EndFunc
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
in-com
В скрипте у вас есть ошибки, начиная с размерности массива и т.д.
Почитайте внимательно в справке про TCP функции. Поковыряйте примеры из справки. Если не одолеете, вечером напишу.
 
Автор
I

in-com

Новичок
Сообщения
28
Репутация
0
Форумчане помогите доделать этот скрипт. Буду очень признателен.
 

gringo

Новичок
Сообщения
5
Репутация
0
Доброго дня всем форумчанам, очень нужна ваша помощь. Нужен скрипт мониторинга нескольких серверов, т.е. чтобы скрипт создавал соединение допустим по 21 порту к серверам и соединение было активным бесконечно долго, пока есть связь до серверов. Если связь (коннект по порту) с каким либо сервером пропадает, отписывал это в лог, и периодически проверял, а не появилась ли связь, если связь появилась снова отписывал в лог. Понимаю, что хочу возможно слишком много и сразу, поэтому готов на разумную оплату трудов человека, который мне сможет помочь.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Верх