相关文章推荐
想发财的遥控器  ·  和生物有关的大学专业有哪些? - 知乎·  1 年前    · 
谈吐大方的警车  ·  太原理工大学2013年高考各省录取分数线及录 ...·  1 年前    · 
买醉的鸡蛋  ·  AI音乐生成器:2023年十款最佳的AI音乐生成器·  1 年前    · 
活泼的围巾  ·  特辑《产前产后妈妈的身体》(第三集) ...·  1 年前    · 
豪爽的西装  ·  2020年9月3日外交部发言人华春莹主持例行 ...·  1 年前    · 
小百科  ›  Errno 9: Bad file de开发者社区
谈吐大方的跑步鞋
11 月前
py3study

Errno 9: Bad file de

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
py3study
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > Errno 9: Bad file de

Errno 9: Bad file de

作者头像
py3study
发布 于 2020-01-06 16:51:37
2.6K 0
发布 于 2020-01-06 16:51:37
举报
文章被收录于专栏: python3 python3

写了一个循环检测端口的程序,循环的次数多了,会报Errno 9: Bad file descriptor in python socket错误。程序如下:

代码语言: javascript
复制
def Scan_port(host,port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #socket.setdefaulttimeout(10)
    s.settimeout(10)
    t = 1
    while 1:
            s.connect((host,port))
            s.close()
            break
        except socket.error, e:
            s.close()
            if t > 3:
                print e
                break
            else:
                t = t + 1
                time.sleep(1)

socket连接超时时间为10s,超时之后重试3次,3次依然连接不到或是超时,则抛错。这个函数加入到多线程,多个主机时就会报Errno 9: Bad file descriptor in python socket错误。查找了材料,都说是s.close()在循环里面是主线问题的主要原因,不管s.close()在循环中的那个位置都会出现这个错误。后修改了这段代码如下:

代码语言: javascript
复制
def Scan_port(host,port):
    t = 1
    while 1:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        #socket.setdefaulttimeout(10)
        s.settimeout(10)
                s.connect((host,port))
                s.close()
                break
            except socket.error, e:
                s.close()
                if t > 3:
 
推荐文章
想发财的遥控器  ·  和生物有关的大学专业有哪些? - 知乎
1 年前
谈吐大方的警车  ·  太原理工大学2013年高考各省录取分数线及录取人数- 高考- 中国教育 ...
1 年前
买醉的鸡蛋  ·  AI音乐生成器:2023年十款最佳的AI音乐生成器
1 年前
活泼的围巾  ·  特辑《产前产后妈妈的身体》(第三集) 华歌尔内衣品牌告诉你内衣效果 ...
1 年前
豪爽的西装  ·  2020年9月3日外交部发言人华春莹主持例行记者会— 中华人民共和国 ...
1 年前
Link管理   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南