import socket
import threading

# Adresse IP et port du serveur
host = ''
port = 8200

# Créer une socket TCP
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Lier la socket à l'adresse et au port spécifiés
server_socket.bind((host, port))

# Mettre la socket en mode écoute
server_socket.listen(5)  # Peut gérer plusieurs connexions simultanées

print(f"Le serveur écoute sur {host}:{port}")

# Fonction pour gérer la communication avec chaque client
def handle_client(client_socket, client_address):
    print(f"Connexion établie avec {client_address}")

    try:
        while True:
            # Recevoir un message du client
            client_message = client_socket.recv(1024).decode('utf-8')
            if not client_message:
                break
            print(f"Message reçu de {client_address}: {client_message}")

            # Répondre au client
            server_message = input("Entrez votre message pour le client : ")
            client_socket.sendall(server_message.encode('utf-8'))

    except Exception as e:
        print(f"Erreur lors de la communication avec {client_address}: {e}")

    finally:
        # Fermer la connexion avec le client
        client_socket.close()
        print(f"Connexion fermée avec {client_address}")

# Boucle pour accepter les connexions entrantes
while True:
    client_socket, client_address = server_socket.accept()
    # Démarrer un thread pour chaque client
    client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
    client_thread.start()