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