2008-12-13 3 views
-1

я хочу, чтобы проверить мое соединение с сервером, если знать его доступную или не информировать пользователя ..Как проверить соединение с сервером

так, как отправить PKG или сбщ на сервер (это не SQL сервер, это сервер содержит некоторые serviecs) ...

Thnx в adcvance ..

+2

Какой язык, какие библиотеки? – Bernard 2008-12-13 08:05:10

ответ

3

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

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

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

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

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

0

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

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 

который ничего более простой питон сокет сервера прослушивает 55555 и возвращение живых

Смежные вопросы