first commit

This commit is contained in:
Алекс 2025-12-06 19:55:04 +01:00
commit ecaa57fcb1
4 changed files with 1096 additions and 0 deletions

1
ReadMe.md Normal file
View File

@ -0,0 +1 @@
https://youtu.be/uonU5m0xER8

Binary file not shown.

1041
client.py Normal file

File diff suppressed because it is too large Load Diff

54
main.py Normal file
View File

@ -0,0 +1,54 @@
import socket
import threading
# Configuraci n del servidor
HOST = '0.0.0.0' # Escucha en todas las interfaces de red
PORT = 3333 # Puerto de escucha
clients = [] # Lista para almacenar los clientes conectados
# Funci n para retransmitir mensajes a todos los clientes
def broadcast(message, client_socket):
for client in clients:
if client != client_socket: # Evitar enviar el mensaje al remitente
try:
client.send(message)
except:
# Si falla el env o, eliminar el cliente
clients.remove(client)
# Función para manejar la comunicación con un cliente
def handle_client(client_socket, client_address):
print(f"[NUEVO CLIENTE] {client_address} conectado.")
while True:
try:
# Recibir mensaje del cliente
message = client_socket.recv(1024)
if not message:
break # Si no hay mensaje, el cliente cerr la conexi n
print(f"[{client_address}] {message.decode('utf-8')}")
# Retransmitir el mensaje a los dem s clientes
broadcast(message, client_socket)
except:
print(f"[DESCONECTADO] {client_address} se ha desconectado.")
clients.remove(client_socket)
client_socket.close()
break
# Funci n principal para iniciar el servidor
def start_server():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # IPv4, TCP
server.bind((HOST, PORT))
server.listen(5) # M ximo 5 conexiones en cola
print(f"[INICIO] Servidor escuchando en {HOST}:{PORT}")
while True:
client_socket, client_address = server.accept() # Aceptar nueva conexión
clients.append(client_socket)
print(f"[CONECTADO] Nueva conexi n desde {client_address}")
# Iniciar un hilo para manejar el cliente
client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
client_thread.start()
# Iniciar el servidor
if __name__ == "__main__":
start_server()