python多线程扫描端口示例

雪是一种能够令人产生多种情绪的东西,当窗外那像柳絮、像芦花般的雪花,正在纷纷扬扬地从天而降的时候,当大地被雪花装饰得像铺上白色的地毯一样的时候,站在窗户边上,望着它们。


# -*- coding: cp936 -*-
import socket
from threading import Thread,activeCount,Lock
from time import ctime
mutex = Lock()

class Loop(Thread):
def __init__(self,ip,port,que):
Thread.__init__(self)
self.ip = ip
self.port = port
self.que = que

def run(self):
global mutex
try:
client = socket.socket()
indicator = client.connect_ex((self.ip,self.port))
if mutex.acquire(1):
if indicator == 0:
que.append(self.ip+'\t'+str(self.port))
else:
print self.ip,'\t',str(self.port),'不可达'
mutex.release()
except:
if mutex.acquire(1):
print self.ip,'\t',str(self.port),'不可达'
mutex.release()

class Main(Thread):
def __init__(self,ip,que):
Thread.__init__(self)
self.ip = ip
self.que = que

def run(self):
i = 0
while i < 65536:
if activeCount() <= 200:
Loop(ip=self.ip,port=i,que=self.que).start()
i = i + 1

if __name__ == '__main__':
que = []
ip = raw_input('IP=')

main = Main(ip = ip,que = que)
main.start()

while True:
if activeCount() <= 1 and main.isAlive() == False:
break

print ''
f = open('portOpen.py','a')
f.write("'''")
f.write(ctime()+'\n')
f.flush()
for i in range(0,len(que)):
print que[i]
f.write('\t'+que[i]+'\n')
f.flush()
f.write("'''")
f.close()

raw_input()

'''Mon Jan 13 07:12:53 2014
localhost135
localhost1028
localhost8048
localhost8080
localhost8181
localhost8730
localhost12040
localhost12897
localhost18040
localhost18611
''''''Tue Jan 14 10:04:58 2014
localhost135
localhost1028
localhost8048
localhost8080
localhost8181
localhost12897
localhost18040
localhost18611
'''

到此这篇关于python多线程扫描端口示例就介绍到这了。青春是春天里的第一抹新绿,突破严冬的萧瑟和荒凉,给人们送来春天的问候;青春是孩子灿烂的笑脸,无拘无束无忧无虑,给人们带来欢乐和活力。更多相关python多线程扫描端口示例内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

标签: 多线程 python