def listener(msgList: tkinter.Text, s: socket, clientEncryptor: PKCS1OAEP_Cipher): while True: if s.fileno() == -1: # socket closed break r, _, _ = select.select([s], [], []) for rs in r: if s == rs: try: data = rs.recv(4096) except OSError: # connection terminated (for some reason) break if not data: break msg = clientEncryptor.decrypt(data) msg = pickle.loads(msg) if msg[0]: message = "<SERVER>: " + msg[3] else: message = msg[2] + ": " + msg[3] msgList.tag_config(str(msg[1]), foreground=str(msg[1])) msgList.config(state=tkinter.NORMAL) msgList.insert(tkinter.END, message + '\n', str(msg[1])) msgList.config(state=tkinter.DISABLED)
def on_accept(self, sock: socket): print("getting data from {0}".format(sock.fileno())) conn, addr = sock.accept() print('accepted connection from {0}'.format(addr)) conn.setblocking(False) # set it state for Any in coming message # register this new conn to read event self.selector.register(fileobj=conn, events=selectors.EVENT_READ)
def add_client(cls, client: socket, address: str): cls.ADDRESS_REGISTRY.update({client.fileno(): address})