【发布时间】:2010-09-26 18:29:56
【问题描述】:
我想检查我的服务器连接以了解它是否可用以通知用户..
那么如何将 pkg 或 msg 发送到服务器(它不是 SQL 服务器;它是一个包含一些服务的服务器)...
thnx in adcvance ..
【问题讨论】:
标签: connection
我想检查我的服务器连接以了解它是否可用以通知用户..
那么如何将 pkg 或 msg 发送到服务器(它不是 SQL 服务器;它是一个包含一些服务的服务器)...
thnx in adcvance ..
【问题讨论】:
标签: connection
如果你可以打开一个端口但不想使用 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 并活着返回
【讨论】:
由于防火墙阻止 ICMP 数据包或特定端口的所有可能性,保证服务正在运行的唯一方法是执行使用该服务的操作。
例如,如果它是 JDBC 服务器,您可以执行非破坏性 SQL 查询,例如 DB2 的select * from sysibm.sysdummy1。如果是 HTTP 服务器,你可以为 index.htm 创建一个 GET 数据包。
如果您确实可以控制该服务,那么创建一个特殊的子服务来处理这些请求是一件简单的事情(例如您通过 CHECK 数据包发送并返回 OKAY 响应)。
这样,您可以避免所有可能的防火墙问题,并且测试是真正的端到端测试。 PING 和 traceroute 将能够判断您是否可以访问机器(防火墙允许),但它们不会告诉您您的服务是否正常运行。
从一个不得不在公司环境中与网络之神战斗的人那里得到这个,在这个环境中机器被锁得像众所周知的鱼一样严密......
【讨论】: