Python套接字连接超时

ano*_*ous 49 python sockets

我有一个套接字,我想在连接时超时,以便我可以取消整个操作,如果它无法连接,它也想要使用不需要超时的套接字的makefile.

有没有一种简单的方法可以做到这一点,或者这将是一件困难的事情吗?

python是否允许在连接后重置超时,以便我可以使用makefile并且仍然有套接字连接的超时

Joã*_*nto 91

您只需要settimeout()在尝试之前使用套接字方法connect(),请注意在连接之后必须settimeout(None)将套接字设置为阻塞模式,这对于makefile是必需的.这是我正在使用的代码:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect(address)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
Run Code Online (Sandbox Code Playgroud)

  • 有关信息,超时必须以秒为单位表示. (18认同)

Joh*_*ooy 17

如果您使用的是Python2.6或更新版本,则使用起来非常方便 socket.create_connection

sock = socket.create_connection(address, timeout=10)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
Run Code Online (Sandbox Code Playgroud)