python - 在 Python 中测试套接字连接

标签 python sockets

此问题将扩展至:Best way to open a socket in Python
打开套接字时,我如何测试它是否已建立,并且它没有超时,或者通常失败。

编辑: 我试过这个:

try:
    s.connect((address, '80'))
except:
    alert('failed' + address, 'down')

但即使该连接应该工作,也会调用警报函数。

最佳答案

似乎你没有捕捉到你想捕捉的异常:)

如果 ssocket.socket() 对象,那么调用 .connect 的正确方法是:

import socket
s = socket.socket()
address = '127.0.0.1'
port = 80  # port number is a number, not string
try:
    s.connect((address, port)) 
    # originally, it was 
    # except Exception, e: 
    # but this syntax is not supported anymore. 
except Exception as e: 
    print("something's wrong with %s:%d. Exception is %s" % (address, port, e))
finally:
    s.close()

始终尝试查看您在 try-except 循环中捕获的异常类型。

您可以检查套接字模块中的哪些类型的异常代表了哪些类型的错误(超时、无法解析地址等),并为每个异常创建单独的 except 语句 - 这样您'将能够针对不同类型的问题做出不同的 react 。

关于python - 在 Python 中测试套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/177389/

相关文章:

Python异步: stop and start a task from another task without lossing state?

python - 是否可以限制 Flask 请求触发的 CPU/内存使用?

python - 隐式函数,希望根据键执行不同的数学函数

python - 从 Pygame 中的组中获取特定 Sprite

javascript - 哪种是在回合制多人游戏中实现计时器的最佳方法?

c++ - 将结构序列化为 char * 并通过 UDP 发送

c++ - 使用 zlib 压缩文件而不保存到磁盘并通过套接字发送

python - 打开 Azure StorageStreamDownloader 而不将其另存为文件

用于 IOT 项目的多个服务器通信的 Java 单客户端线程

java - 通俗地说,ServerSocket 构造函数