from asyncore import dispatcher from asynchat import async_chat import socket, asyncore PORT = 5005 class ChatSession(async_chat): def __init__(self, sock): async_chat. init (self, sock) self.set_terminator("\r\n") self.data = [] def collect_incoming_data(self, data): self.data.append(data) def found_terminator(self): line = ''.join(self.data) self.data = [] # Do something with the line... print(line) class ChatServer(dispatcher): def __init__(self, port): dispatcher. init (self) self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.set_reuse_addr() self.bind(('', port)) self.listen(5) self.sessions = [] def handle_accept(self): conn, addr = self.accept() self.sessions.append(ChatSession(conn)) if __name__ == '__main__': s = ChatServer(PORT) try: asyncore.loop() except KeyboardInterrupt: print()