import socket from threading import Thread from socketserver import ThreadingMixIn from utils.keys_manager_1 import * # --- Init keys --- () # Multithreaded Python server : TCP Server Socket Thread Pool class ClientThread(Thread): def __init__(self,ip,port, private_key, public_key): Thread.__init__(self) self.ip = ip self.port = port #print(public_key_serializer(public_key)) print("[+] New server socket thread started for " + str(ip) + ":" + str(port)) public_key_pem = public_key_serializer(public_key) conn.send(public_key_pem) def run(self): while True : data = conn.recv(2048) print("Server received data:", data) MESSAGE = input("Multithreaded Python server : Enter Response from Server/Enter exit:").encode('utf-8') if MESSAGE == 'exit': break conn.send(MESSAGE) # echo # Multithreaded Python server : TCP Server Socket Program Stub TCP_IP = '0.0.0.0' TCP_PORT = 2004 BUFFER_SIZE = 20 # Usually 1024, but we need quick response tcpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcpServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) tcpServer.bind((TCP_IP, TCP_PORT)) threads = [] # --- Init keys --- (private_key, public_key) = check_for_existing_keys() print(public_key_serializer(public_key)) while True: tcpServer.listen(4) print("Multithreaded Python server : Waiting for connections from TCP clients...") (conn, (ip,port)) = tcpServer.accept() newthread = ClientThread(ip,port,private_key,public_key) newthread.start() threads.append(newthread) for t in threads: t.join()