from socket import *
import threading
lock=threading.Lock() #线程锁
num=0
def Scanner(host,port):
global num
try:
s=socket(AF_INET,SOCK_STREAM) #建立socket连接
s.connect((host,port)) #连接
lock.acquire() #加锁
num+=1
print('Port %d open' % port) #打印开放端口
lock.release()#解锁
s.close()#关闭socket连接
except:
return None
def main():
setdefaulttimeout(1) #设置socket超时时间
for n in range(1,76):
tt=[]
for p in range((n-1)*880,n*880):
t=threading.Thread(target=Scanner,args=('127.0.0.1',p)) #多线程扫描localhost 端口数
tt.append(t)
t.start() #启动线程
for y in tt:
y.join()#在子线程完成运行之前,这个子线程的父线程将一直被阻塞。
print('扫描结束')
print('开放端口数为:%d' % (num))
if __name__=='__main__':
main() #启动程序