From d23c1c032c6d58308df5ec493b250ce2b2740cbe Mon Sep 17 00:00:00 2001 From: anon Date: Thu, 1 Feb 2024 21:59:53 +0100 Subject: [PATCH] new version with balancing --- netchat.balance.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 netchat.balance.py diff --git a/netchat.balance.py b/netchat.balance.py new file mode 100755 index 0000000..fcc660a --- /dev/null +++ b/netchat.balance.py @@ -0,0 +1,42 @@ +#!/bin/python3 +import socket +from sys import argv +from signal import signal, SIGINT + +socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +socket.bind(('localhost', int(argv[1]))) +socket.listen(100) +socket.setblocking(False) + +signal(SIGINT, lambda a, b: (socket.close(), exit(0))) + +print(f"Listening on {argv[1]}...") + +class User: + def __init__(self, i): + self.username = "anon" + str((id(self) % 999 + 1)) + self.socket, _ = i + self.socket.settimeout(1) + self.skip = 0 + +users = [] + +while True: + try: + users.append(User(socket.accept())) + except BlockingIOError: + pass + for i in users: + try: + msg = i.socket.recv(1024) + except TimeoutError: + continue + if msg: + for h in users: + if i != h: + h.skip += 1 + h.socket.send(("\033[s\033[" + str(h.skip) + "E" + i.username + ": " + msg.decode() + "\033[u").encode()) + else: + print(h, "skip:", h.skip, "going down:", h.skip-1) + i.socket.send(("\033[" + str(i.skip-1) + "E" + i.username + ": " + msg.decode()).encode()) + i.skip = 0