import socket # def get_local_ip(): # client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # # 连接谷歌的dns服务器 # client.connect(("8.8.8.8", 80)) # ip, _ = client.getsockname() # 获取套接字自己的地址,返回元组,ip地址和端口号 # client.close() # return ip # # # if __name__ == '__main__': # print(get_local_ip()) import socket from concurrent.futures import wait, ALL_COMPLETED, ThreadPoolExecutor def getport(port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1) state = sock.connect_ex(("192.168.11.8", port)) if 0 == state: print("port: {} is open".format(port)) sock.close() with ThreadPoolExecutor(max_workers=100) as t: task_array = [] for port in range(1, 65535): task = t.submit(getport, port) task_array.append(task) wait(task_array, return_when=ALL_COMPLETED)