#author("2025-12-29T09:27:14+09:00","default:TESLA202407","TESLA202407") * tcp_server_ex01.py [#id2943ba] #author("2025-12-29T09:27:37+09:00","default:TESLA202407","TESLA202407") * tcp_server_ex1.py at factory (receiver) [#id2943ba] #code(python){{ import socket import threading import subprocess HOST = '' PORT = 9998 clients = [] def remove_conection(con, address): """クライアントと接続を切る""" print('[切断]{}'.format(address)) con.close() clients.remove((con, address)) def server_start(): """サーバをスタートする""" sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind((HOST, PORT)) sock.listen(10) subprocess.Popen("python3 /home/pi/python/pi_arduino_uart_ex01.py",shell=True) while True: con, address = sock.accept() print("[接続]{}".format(address)) clients.append((con, address)) handle_thread = threading.Thread(target=handler, args=(con, address), daemon=True) handle_thread.start() def handler(con, address): """クライアントからデータを受信する""" while True: try: data = con.recv(1024) except ConnectionResetError: remove_conection(con, address) break else: if not data: remove_conection(con, address) break else: print("[受信]{} - {}".format(address, data.decode("utf-8"))) for c in clients: if c[0]!=con: while data: n = c[0].sendto(data,c[1]) data = data[n:] if __name__ == "__main__": server_start() }} ---- #counter