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

2021-04-14  本文已影响0人  忘了呼吸的那只猫

一,默认超时时间设置

socket.setdefaulttimeout(time)

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)
上一篇 下一篇

猜你喜欢

热点阅读