Как проверить соединение с сервером - PullRequest
0 голосов
/ 13 декабря 2008

Я хочу проверить соединение с моим сервером, чтобы узнать, доступно ли оно или нет, чтобы сообщить пользователю.

как отправить pkg или msg на сервер (это не SQL-сервер; это сервер, содержащий несколько серверов) ...

Спасибо за продвижение ..

Ответы [ 2 ]

3 голосов
/ 13 декабря 2008

Со всеми возможностями для межсетевых экранов, блокирующих пакеты ICMP или определенные порты, единственный способ гарантировать, что служба работает, - это сделать что-то, что использует эту службу.

Например, если бы это был сервер JDBC, вы могли бы выполнить неразрушающий SQL-запрос, такой как select * from sysibm.sysdummy1 для DB2. Если это HTTP-сервер, вы можете создать пакет GET для index.htm.

Если у вас фактически есть контроль над службой, просто создать специальную вспомогательную службу для обработки этих запросов (например, отправить через пакет CHECK и получить ответ OKAY).

Таким образом, вы избегаете всех возможных проблем с брандмауэром, и этот тест является действительно комплексным. PING и traceroutes смогут определить, можете ли вы добраться до машины (если брандмауэры позволяют), но они не сообщат вам, работает ли ваша служба.

Возьми это у кого-то, кто должен был сражаться с сетевыми богами в корпоративной среде, где машины заперты так же тесно, как пресловутые рыбы ...

0 голосов
/ 13 декабря 2008

Если вы можете открыть порт, но не хотите использовать ping (я не знаю почему, но эй), вы можете использовать что-то вроде этого:

import socket

host = ''
port = 55555

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(1)

while 1:
    try:
        clientsock, clientaddr = s.accept()
        clientsock.sendall('alive')
        clientsock.close()
    except:
        pass

, который представляет собой не что иное, как простой сервер сокетов Python, прослушивающий 55555 и возвращающий живой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...