Un exemple clàssic de programació client-servidor és un xat en línia. En aquest cas, el client i el servidor es comuniquen per enviar i rebre missatges en temps real. Aquí tens un exemple bàsic de com es podria implementar en llenguatge Python utilitzant sockets:
Servidor:
import socket import threading def gestionar_client(sock_client): while True: try: # Rebre dades del client dades = sock_client.recv(1024).decode('utf-8') if dades: print(f"Missatge rebut del client: {dades}") # Enviar resposta al client resposta = "Missatge rebut pel servidor" sock_client.send(resposta.encode('utf-8')) except: break # Tancar la connexió amb el client sock_client.close() def iniciar_servidor(): # Configurar el servidor host = 'localhost' port = 8080 # Crear un socket de servidor sock_servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Vincular el socket a l'adreça i port especificats sock_servidor.bind((host, port)) # Escoltar connexions entrants sock_servidor.listen(5) print('Servidor escoltant a {}:{}'.format(host, port)) while True: # Acceptar una connexió entrant sock_client, adr_client = sock_servidor.accept() print('Client connectat des de {}:{}'.format(adr_client[0], adr_client[1])) # Gestionar el client en un fil separat fil_client = threading.Thread(target=gestionar_client, args=(sock_client,)) fil_client.start() iniciar_servidor()
Client:
import socket def iniciar_client(): # Configurar el client host = 'localhost' port = 8080 # Crear un socket de client sock_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Connectar al servidor sock_client.connect((host, port)) while True: # Enviar missatge al servidor missatge = input('Introdueix un missatge: ') sock_client.send(missatge.encode('utf-8')) # Rebre resposta del servidor resposta = sock_client.recv(1024).decode('utf-8') print('Resposta del servidor:', resposta) iniciar_client()
Aquest exemple mostra com un client es connecta al servidor utilitzant sockets TCP/IP. El client pot enviar missatges al servidor i rebre respostes. El servidor, d’altra banda, accepta connexions entrants, gestiona les sol·licituds dels clients en fils separats i respon a cada client de forma individual.