diff --git a/serveur.py b/serveur.py new file mode 100644 index 0000000000000000000000000000000000000000..9cfd398229d21404c53270c9d2ff74857efc8de6 --- /dev/null +++ b/serveur.py @@ -0,0 +1,64 @@ +import socket +import threading +import tkinter as tk + +def accept_connections(): + while True: + client_socket, client_address = server_socket.accept() + clients.append(client_socket) + message = f"{client_address[0]}:{client_address[1]} connected." + chat_box.insert(tk.END, message + "\n") + broadcast(message) + client_thread = threading.Thread(target=handle_client, args=(client_socket,)) + client_thread.start() + +def handle_client(client_socket): + while True: + try: + message = client_socket.recv(1024).decode() + broadcast(message) + except ConnectionResetError: + client_socket.close() + clients.remove(client_socket) + broadcast(f"Client {client_socket.getpeername()} disconnected.") + break + +def broadcast(message): + for client_socket in clients: + try: + client_socket.send(message.encode()) + except ConnectionResetError: + client_socket.close() + clients.remove(client_socket) + +def send_message(): + message = message_input.get() + broadcast("Server: " + message) + chat_box.insert(tk.END, "Server: " + message + "\n") + message_input.delete(0, tk.END) + +# Create the server socket +server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +server_socket.bind(('localhost', 5000)) +server_socket.listen(5) + +clients = [] + +# Create the GUI +window = tk.Tk() +window.title("Chat Server") + +chat_box = tk.Text(window, height=10, width=50) +chat_box.pack() + +message_input = tk.Entry(window, width=50) +message_input.pack() + +send_button = tk.Button(window, text="Send", command=send_message) +send_button.pack() + +# Start accepting connections in a separate thread +accept_thread = threading.Thread(target=accept_connections) +accept_thread.start() + +window.mainloop() \ No newline at end of file