Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python套接字连接超时_Python_Sockets - Fatal编程技术网

Python套接字连接超时

Python套接字连接超时,python,sockets,Python,Sockets,我有一个套接字,我想在连接时超时,这样我可以取消整个操作,如果它无法连接,但它还想使用不需要超时的套接字的makefile 有没有一个简单的方法来做到这一点,还是这将是一件困难的事情呢 python是否允许在连接后重置超时,以便我可以使用makefile,并且套接字连接仍然有一个超时在尝试connect()之前,您只需要使用socket方法,请注意,连接后必须settimeout(None)将套接字设置为阻塞模式,这是makefile所必需的。 以下是我正在使用的代码: sock = socke

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

有没有一个简单的方法来做到这一点,还是这将是一件困难的事情呢


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

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

如果您使用的是Python2.6或更新版本,那么使用起来很方便


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

import socket
socks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socks.settimeout(10.0) # settimeout is the attr of socks.

作为参考,超时必须以秒表示。是的,python允许超时重置。您甚至可以在makefile之后设置不同的超时。我已经在linux和windows上进行了测试。这是不对的?它应该是
socks.settimeout(10.0)
,否则您会遇到属性错误。请注意,在3.7.x版和之前的版本中,可能还有一个
sockets.setdefaulttimeout(10.0)
,我认为所有新创建的带超时的套接字库对象都会使用它。
import socket
socks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socks.settimeout(10.0) # settimeout is the attr of socks.