Python套接字连接超时

时间:2010-08-07 21:28:04

标签: python sockets

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

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

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

3 个答案:

答案 0 :(得分:82)

在尝试connect()之前,您只需要使用套接字settimeout()方法,请注意连接后必须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)

答案 1 :(得分:14)

如果您使用的是Python2.6或更新版本,则使用socket.create_connection

会很方便
sock = socket.create_connection(address, timeout=10)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)

答案 2 :(得分:0)

要设置套接字超时,您需要执行以下步骤:

import socket
socks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.settimeout(10.0)