原始代码如下:
import socket
import time
sk=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #TCP连接
ip = input('>>>请输入IP:')
port = int(input('>>>请输入端口:'))
error = sk.connect_ex((ip,port)) #连接1
conA = '连接失败'
conB = '连接成功'
conC = '错误代码:'
while (error >= 0):
if error > 0:
print(conA, conC, error)
sk.close()
time.sleep(0.5)
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
error = sk.connect_ex((ip, port))
elif error == 0:
print(conB, ip, port)
sk.close()
time.sleep(1)
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
error = sk.connect_ex((ip, port))
sk.close()
OSError 10060 默认20s实在太长了,想改短一点 如settimeout(1) 这样
测试了好多次setdefaulttimeout 均返回10035,请求大佬们给指点一些setdefaulttimeout 应该怎么去使用
版本Python 3.8.0
添加了setdefaulttimeout的效果:
import socket
import time
socket.setdefaulttimeout(0.5)
sk=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #TCP连接
sk.gettimeout()
ip = input('>>>请输入IP:')
port = int(input('>>>请输入端口:'))
error = sk.connect_ex((ip,port))
conA = '连接失败'
conB = '连接成功'
conC = '错误代码:'
while (error >= 0):
if error > 0:
print(conA, conC, error)
sk.close()
time.sleep(0.5)
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
error = sk.connect_ex((ip, port))
elif error == 0:
print(conB, ip, port)
sk.close()
time.sleep(1)
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
error = sk.connect_ex((ip, port))
sk.close()
运行结果:
本质上超时是10060,但是设置setdefaulttimeout后为10035,虽然我用的connect-ex 自由返回具体OSError代码,也是可以用,但是想还是返回10060实际代码,有什么办法可以设置setdefaulttimeout后,还是返回 10060超时代码吗?