commit
bffd5996e7
@ -0,0 +1,33 @@
|
||||
import socket
|
||||
import threading
|
||||
|
||||
# Configuración del cliente
|
||||
HOST = 'localhost'
|
||||
PORT = 5555
|
||||
|
||||
# Crear un socket del cliente
|
||||
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
client_socket.connect((HOST, PORT))
|
||||
|
||||
def receive_messages():
|
||||
"""Recibe mensajes del servidor y muestra en pantalla."""
|
||||
while True:
|
||||
try:
|
||||
message = client_socket.recv(1024).decode('utf-8')
|
||||
print(message)
|
||||
except:
|
||||
# En caso de error, salir del bucle
|
||||
break
|
||||
|
||||
def send_messages():
|
||||
"""Envía mensajes al servidor."""
|
||||
while True:
|
||||
message = input()
|
||||
client_socket.send(message.encode('utf-8'))
|
||||
|
||||
# Iniciar hilos para recibir y enviar mensajes
|
||||
receive_thread = threading.Thread(target=receive_messages)
|
||||
receive_thread.start()
|
||||
|
||||
send_thread = threading.Thread(target=send_messages)
|
||||
send_thread.start()
|
@ -0,0 +1,62 @@
|
||||
import socket
|
||||
import threading
|
||||
|
||||
# Configuración del servidor
|
||||
HOST = ''
|
||||
PORT = 5555
|
||||
|
||||
# Crear un socket del servidor
|
||||
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
server_socket.bind((HOST, PORT))
|
||||
server_socket.listen()
|
||||
|
||||
# Lista para almacenar conexiones de clientes
|
||||
clients = []
|
||||
|
||||
def broadcast(message, client_socket):
|
||||
"""Envía el mensaje a todos los clientes conectados."""
|
||||
for client in clients:
|
||||
# Excepto al cliente que envió el mensaje
|
||||
if client != client_socket:
|
||||
try:
|
||||
client.send(message)
|
||||
except:
|
||||
# Eliminar clientes que no responden
|
||||
clients.remove(client)
|
||||
|
||||
def handle_client(client_socket):
|
||||
"""Maneja la conexión de un cliente."""
|
||||
while True:
|
||||
try:
|
||||
# Recibir mensajes del cliente
|
||||
message = client_socket.recv(1024)
|
||||
if not message:
|
||||
break
|
||||
|
||||
# Imprimir el mensaje en el servidor
|
||||
print(f"Mensaje de {client_socket.getpeername()}: {message.decode('utf-8')}")
|
||||
# Broadcast del mensaje a todos los clientes
|
||||
broadcast(message, client_socket)
|
||||
|
||||
except:
|
||||
# Eliminar clientes que causan problemas
|
||||
clients.remove(client_socket)
|
||||
break
|
||||
|
||||
def main():
|
||||
print(f"Servidor en escucha en {HOST}:{PORT}")
|
||||
|
||||
while True:
|
||||
# Aceptar nuevas conexiones
|
||||
client_socket, address = server_socket.accept()
|
||||
print(f"Conexión aceptada desde {address}")
|
||||
|
||||
# Agregar el nuevo cliente a la lista
|
||||
clients.append(client_socket)
|
||||
|
||||
# Iniciar un hilo para manejar al cliente
|
||||
thread = threading.Thread(target=handle_client, args=(client_socket,))
|
||||
thread.start()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in new issue