From e2350d4b35a30d8dc4942401d71f0b58ed7a8a43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Tue, 25 Feb 2025 10:25:17 +0100 Subject: [PATCH] add client and server implementation for socket communication --- .gitignore | 5 ++++- TP7/7.3/client.py | 36 ++++++++++++++++++++++++++++++++ TP7/7.3/server.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++ main.py | 7 ------- 4 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 TP7/7.3/client.py create mode 100644 TP7/7.3/server.py delete mode 100644 main.py diff --git a/.gitignore b/.gitignore index b39996e..ccaeb42 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,7 @@ .idea/* .venv -.venv/* \ No newline at end of file +.venv/* + +.winvenv +.winvenv/* \ No newline at end of file diff --git a/TP7/7.3/client.py b/TP7/7.3/client.py new file mode 100644 index 0000000..ec5e80a --- /dev/null +++ b/TP7/7.3/client.py @@ -0,0 +1,36 @@ +import socket +import threading + +def receive_messages(client_socket): + try: + while True: + msg = client_socket.recv(1024) + if msg.decode() == 'stop': + print('Received stop signal. Closing connection.') + break + else: + print(f'Message received: {msg.decode()}') + except Exception as e: + print(f'Error: {e}') + finally: + client_socket.close() + +client_socket = socket.socket() +client_socket.connect(('localhost', 12345)) +client_socket.send('Coucou'.encode()) + +# Ask the user for messages to send +try: + while True: + msg = input('Message: ') + client_socket.send(msg.encode()) + if msg == 'stop': + break +except KeyboardInterrupt: + print('Connection closed') +finally: + client_socket.close() + +receive_thread = threading.Thread(target=receive_messages, args=(client_socket,)) +receive_thread.start() +receive_thread.join() \ No newline at end of file diff --git a/TP7/7.3/server.py b/TP7/7.3/server.py new file mode 100644 index 0000000..f148e21 --- /dev/null +++ b/TP7/7.3/server.py @@ -0,0 +1,52 @@ +import socket +import threading + +clients = [] + +def send_to_all(clients, message): + for client in clients: + try: + client.send(message) + except Exception as e: + print(f'Error sending message to a client: {e}') + clients.remove(client) + +def client_thread(client_socket, clients): + try: + while True: + msg = client_socket.recv(1024) + if msg: + print(f'Message received: {msg.decode()}') + send_to_all(clients, msg) + else: + break + except Exception as e: + print(f'Error: {e}') + finally: + client_socket.close() + clients.remove(client_socket) + +server_socket = socket.socket() +server_socket.bind(('', 12345)) +server_socket.listen() + +print('Server is listening for connections...') + +try: + while True: + client_socket, addr = server_socket.accept() + print(f'Connection from {addr}') + clients.append(client_socket) + thread = threading.Thread(target=client_thread, args=(client_socket, clients)) + thread.start() +except KeyboardInterrupt: + print('Server stopped') +finally: + for client in clients: + try: + client.shutdown(socket.SHUT_RDWR) + except Exception as e: + print(f'Error shutting down client socket: {e}') + client.close() + server_socket.close() + print('Server closed') \ No newline at end of file diff --git a/main.py b/main.py deleted file mode 100644 index bce355f..0000000 --- a/main.py +++ /dev/null @@ -1,7 +0,0 @@ -if __name__ == '__main__': - a='1' - b=int(a) - print(type(a)) - print(type(b)) - print(ord('a')) - print(chr(97)) \ No newline at end of file