fix server close

This commit is contained in:
MuedeHydra 2025-11-24 18:39:13 +01:00
parent 17a76e4b90
commit 1edf5226dc

View File

@ -1,13 +1,18 @@
import socket import socket
import threading import threading
import select
class Connection: class Connection:
sock="" sock=""
addr=0 addr=0
HOST = "127.0.0.1" # Standard loopback interface address (localhost) if 1:
HOST = "0.0.0.0" # open to network
else:
HOST = "127.0.0.1" # Standard loopback interface address (localhost)
PORT = 65432 # Port to listen on (non-privileged ports are > 1023) PORT = 65432 # Port to listen on (non-privileged ports are > 1023)
clients=0 clients=0
run = True
connections=[] connections=[]
def send_message(conn, data): def send_message(conn, data):
@ -17,24 +22,35 @@ def send_message(conn, data):
def handle_connection(conn): def handle_connection(conn):
with conn.sock: with conn.sock:
while True: while run:
data = conn.sock.recv(1024) ready_to_read, _, _ = select.select([conn.sock], [], [], 1.0)
if data: if ready_to_read:
send_message(conn, data) data = conn.sock.recv(1024)
else: if data:
print(f"Disconnected: {conn.addr}") send_message(conn, data)
connections.remove(conn) else:
break print(f"Disconnected: {conn.addr}")
connections.remove(conn)
break
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
try: if __name__ == "__main__":
s.bind((HOST, PORT)) hostname = socket.gethostname()
while True: IPAddr = socket.gethostbyname(hostname)
conn=Connection()
s.listen() with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
conn.sock, conn.addr = s.accept() try:
connections.append(conn) s.bind((HOST, PORT))
threading.Thread(target=handle_connection, args=(conn,)).start() print(f"Server {hostname} on ip {IPAddr}")
except KeyboardInterrupt: while run:
print("Shutdown server") conn=Connection()
s.listen()
conn.sock, conn.addr = s.accept()
connections.append(conn)
threading.Thread(target=handle_connection, args=(conn,)).start()
except KeyboardInterrupt:
run = False
print("Shutdown server")
finally:
s.close()