import socket
import threading
import time
HOST : str = "127.0.0.1"
PORT : int = 3001
CLIENTS = []
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
server.bind((HOST, PORT))
server.listen(3)
print(f"Listening on server on host {HOST} on port {PORT}")
def connectAsClient(host=HOST, port=PORT):
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientSocket.connect((host, port))
handleClient(clientSocket)
def handleClient(client):
CLIENTS.append(client)
print(len(CLIENTS))
def broadcastMessage(message="Hello World", clientList=CLIENTS):
numberOfClients = 0
message = message.encode('utf-8')
for client in clientList:
numberOfClients += 1
client.send(message)
print(f"message sent from client {numberOfClients} : {message}")
def listenToBroadcastMessage(clients=CLIENTS): # Remove unnecessary arguments
while True:
try:
for client in clients:
receivedMessage = client.recv(1024)
receivedMessage = receivedMessage.decode('utf-8')
print(f"Message received: {receivedMessage}")
except ConnectionResetError:
print("ConnectionResetError occurred")
clientThread = threading.Thread(target=connectAsClient).start()
time.sleep(2)
clientThread = threading.Thread(target=connectAsClient).start()
time.sleep(2)
clientThread = threading.Thread(target=connectAsClient).start()
time.sleep(2)
clientThread = threading.Thread(target=connectAsClient).start()
time.sleep(2)
broadcastMessageToClients = threading.Thread(target=broadcastMessage, args=(("Hello World ",CLIENTS))).start()
time.sleep(5)
listenToBroadcaset = threading.Thread(target=listenToBroadcastMessage).start()
while True:
client, addr = server.accept()
print(f"{client} is connected")