|
|
#!/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()
|