美文网首页
python3 socket 中设置超时的几种常用方法

python3 socket 中设置超时的几种常用方法

作者: 忘了呼吸的那只猫 | 来源:发表于2021-04-14 17:02 被阅读0次

一,默认超时时间设置

socket.setdefaulttimeout(time)

  • 参数time为超时时间,必须放到建立链接的前面,否则超时设置无效果
    (这种方式可以设置默认超时时间,包含当前上下文的所有socket连接超时和接收超时有效)
import socket
 
socket.setdefaulttimeout(5)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
sock.sendall('xxx')
sock.recv(1024)
sock.close()

二,设置某一个socket实例连接或接收的超时时间

settimeout(time) socket实例调用的方法,设置当前socket实例连接或接收的超时时间,参数timeNone时恢复默认超时时间

import socket
 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
sock.connect((host, port))
# 恢复默认超时设置,设置某些情况下socket进入阻塞模式(如makefile)
sock.settimeout(None)
sock.connect((host, port))
sock.sendall('xxx')
sock.recv(1024)
sock.close()

三,使用select来设置超时时间

import select
 
mysocket.setblocking(0)
ready = select.select([mysocket], [], [], timeout_in_seconds)
if ready[0]:
    data = mysocket.recv(4096)

相关文章

网友评论

      本文标题:python3 socket 中设置超时的几种常用方法

      本文链接:https://www.haomeiwen.com/subject/pqrxlltx.html