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.