#!/usr/bin/python import socketserver class RequestHandler(socketserver.BaseRequestHandler): def handle(self): # self.request - TCP socket connected to the client print("Hl") self.data = self.request.recv(1024).strip() print("{} sent:".format(self.client_address[0])) print(self.data.decode()) # just send back ACK for data arrival confirmation self.request.sendall("ACK from TCP Server".encode()) def ping(self, param): return "PONG" def command_pass(self, desired_password): return desired_password == self.password def command_nickname(self, user, desired_nickname): if desired_nickname not in self.user_dict.keys(): self.user_dict[desired_nickname] = dict() self.user_dict.pop(user) return True else: self.user_dict.pop(desired_nickname) if user in self.user_dict: self.user_dict.pop(user) # issue kill command (?) return True class IRCServer(socketserver.TCPServer): """ The TCP Server class for demonstration. Note: We need to implement the Handle method to exchange data with TCP client. """ def __init__(self, server_adress): self.servername = 'localhost' self.channels = {} self.clients = {} socketserver.TCPServer.__init__(self, server_adress, RequestHandler) if __name__ == "__main__": HOST, PORT = "localhost", 9999 ircserver = IRCServer((HOST, PORT)) ircserver.serve_forever()