北府太郎 2020-02-21 10:41 采纳率: 0%
浏览 305

Socket OSerror 10060 怎么修改默认超时时间?

原始代码如下:

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超时代码吗?

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-02-21 15:06
    关注
    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站