Errno 9: Bad file descriptor in python socket错误处理

简介:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def Scan_port(host,port):
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     #socket.setdefaulttimeout(10)
     s.settimeout(10)
     t = 1
     while  1:
         try :
             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()在循环中的那个位置都会出现这个错误。后修改了这段代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def Scan_port(host,port):
     t = 1
     while  1:
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         #socket.setdefaulttimeout(10)
         s.settimeout(10)
             try :
                 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提进循环中,经测试2000台服务器的端口不在出错,运行测试了一天没有问题。



本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/1231121,如需转载请自行联系原作者

相关文章
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
168 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
176 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
1月前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
36 1
|
2月前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
262 3
|
2月前
|
安全 网络协议 网络安全
Python Socket编程大揭秘:从菜鸟到黑客的进阶之路,你准备好了吗?
【10月更文挑战第4天】在编程领域,Python Socket编程犹如一把开启网络世界的钥匙,带领开发者从简单数据传输迈向复杂应用构建。本文将引导你从零开始,逐步掌握Socket编程的核心技巧,包括基本概念、TCP服务器与客户端的搭建、并发处理及异常管理、SSL/TLS加密通信,直至深入了解网络协议与安全漏洞。通过实战演练与理论学习,助你成为驾驭网络世界的高手。
37 1
|
2月前
|
存储 网络协议 Linux
聊一聊 Python 的 socket,以及 select、poll、epoll 又是怎么一回事?
聊一聊 Python 的 socket,以及 select、poll、epoll 又是怎么一回事?
167 2
|
3月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
83 1
|
2月前
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
30 0
|
3月前
|
监控 网络协议 数据库连接
Python3 监控端口:使用 socket 库
Python3 监控端口:使用 socket 库
55 0
|
3月前
|
监控 网络协议 数据库连接
Python3 监控端口:使用 socket 库
Python3 监控端口:使用 socket 库
56 0