#!/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_list: self.user_list.append(desired_nickname) self.user_list.remove(user) message = ":" + user + " NICK " + desired_nickname return True else: self.user_list.remove(desired_nickname) if user in self.user_list: self.user_list.remove(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()