首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何才能平一个特定的端口并报告结果呢?

问我如何才能平一个特定的端口并报告结果呢?
EN

Stack Overflow用户
提问于 2022-01-19 00:47:02
回答 1查看 1.2K关注 0票数 1

我在为我的朋友制造一个不和谐的机器人。这个特性是!status,应该是平服务器并报告回复。

代码语言:javascript
复制
    from tcping import Ping
    if message.content.startswith('!status'):
        ping = Ping('HOST', 25565)
        response = ping.ping(1)
        await message.channel.send(str(response))

问题是,机器人只能用“无”来回应。有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-19 01:01:06

我猜你想看看有没有可用的东西(相对于ping) .如果是真的,这可能对你有用..。

代码语言:javascript
复制
import socket

def check(host,port,timeout=2):
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #presumably 
    sock.settimeout(timeout)
    try:
       sock.connect((host,port))
    except:
       return False
    else:
       sock.close()
       return True

print(check('google.com',1234,timeout=1))
print(check('google.com',443,timeout=1))

也许你想计时一下..。很容易

代码语言:javascript
复制
import time
def timed_check(host,port,timeout=2):
    t0 = time.time()
    if check(host,port,timeout):
       return time.time()-t0 # a bit inexact but close enough

print(timed_check('google.com',1234,timeout=1))
print(timed_check('google.com',443,timeout=1))

或者你想要统计数据

代码语言:javascript
复制
def timed_stats_check(host,port,timeout=2,retries=5): 
    minimum,maximum,sumation = float('inf'),float('-inf'),0
    errors = 0
    for i in range(retries):
        t = timed_check(host,port,timeout)
        if t is None:
           print("ERROR Unreachable...")
           errors += 1
        else:
            print(f"Time {t:0.5f}s")
            maximum = max(maximum,t)
            minimum = min(minimum,t)
            sumation += t
    if retries > 0:
        print(f"Max Time: {maximum:0.5f}s")
        print(f"Min Time: {minimum:0.5f}s")
        print(f"Average: {sumation/(retries-errors):0.2f}s")
    print(f"Failures: {errors}/{retries}")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70764097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档