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),'不可達(dá)'
mutex.release()
except:
if mutex.acquire(1):
print self.ip,'\t',str(self.port),'不可達(dá)'
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
localhost 135
localhost 1028
localhost 8048
localhost 8080
localhost 8181
localhost 8730
localhost 12040
localhost 12897
localhost 18040
localhost 18611
''''''Tue Jan 14 10:04:58 2014
localhost 135
localhost 1028
localhost 8048
localhost 8080
localhost 8181
localhost 12897
localhost 18040
localhost 18611
'''
相關(guān)文章
使用Python對零售商品進(jìn)行數(shù)據(jù)分析
這篇文章主要為大家介紹了使用Python對零售商品進(jìn)行數(shù)據(jù)分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-0510個python3常用排序算法詳細(xì)說明與實例(快速排序,冒泡排序,桶排序,基數(shù)排序,堆排序,希爾排序,歸并排序,計數(shù)排
這篇文章主要介紹了10個python3常用排序算法詳細(xì)說明與實例,需要的朋友可以參考下2020-03-03Python操作MySQL數(shù)據(jù)庫9個實用實例
這篇文章主要介紹了Python操作MySQL數(shù)據(jù)庫9個實用實例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-12-12