Skip to main content

[Python] Socket

Introduction

En python, pour créer des applications en réseau il faut passer par des sockets qui est un objet de communication réseau qui permet d'échanger de l'information sur la couche IP.

image.png

Codage

Quelques explications

Le socket est composé :

  • D'un protocole de communication (SOCK_STREAM pour TCP et SOCK_DGRAM pour UDP).
  • D'une adresse IP source et destination.
  • D'un port source et destination.
  • D'un message à transporter.

Code serveur

import socket

SERVER_IP = '127.0.0.1'
SERVER_PORT = 1234

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server_socket.bind((SERVER_IP, SERVER_PORT))

server_socket.listen(5)
print("Serveur en attente de connexions...")

client_socket, client_address = server_socket.accept()
print(f"Connexion entrante de {client_address}")

try:
    data = client_socket.recv(1024)
    print("Message du client :", data.decode())

    response = "Message reçu par le serveur!"
    client_socket.sendall(response.encode())

except ConnectionResetError:
    print("La connexion a été réinitialisée par le client.")

finally:
    client_socket.close()

server_socket.close()

Code client

import socket

SERVER_IP = '127.0.0.1'
SERVER_PORT = 1234

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    client_socket.connect((SERVER_IP, SERVER_PORT))
    print("Connecté au serveur.")

    message = "Bonjour, serveur!"
    client_socket.sendall(message.encode())

    data = client_socket.recv(1024)
    print("Message du serveur :", data.decode())

except ConnectionRefusedError:
    print("La connexion a été refusée. Assurez-vous que le serveur est en cours d'exécution.")

finally:
    client_socket.close()