def __test_packets(self): for i in range(1, len(PacketType) + 1): print("[", i, "] : ", PacketType(i), sep='') packet_type = int(input("[packet type]>")) packet = Packet(PacketType(packet_type)) print('[0] : send') print('add content: ') print('[1] : Decimal') print('[2] : int') print('[3] : float') print('[4] : str') while True: value = int(input("[data type]>")) if value == 0: self.send(packet) break elif value == 1: dec = input("[Decimal] >") packet.add(Decimal(dec)) elif value == 2: integer = input("[int] >") packet.add(int(integer)) elif value == 3: flt = input("[float] >") packet.add(float(flt)) elif value == 4: str = input("[str] >") packet.add(str)
def __listen(self): print("Listening...") cursor = Connection().getInstance() while True: data, clientInfo = self.incoming.receive() clientIP, clientPort = clientInfo print("DEBUG: Received from " + clientIP + ":" + str(clientPort)) print("DEBUG: ", data) packet = Packet(raw_data=data) type = packet.get_type() print("DEBUG: Type ->", type) if type == PacketType.MESSAGE: print("message: ", packet.get()) if type == PacketType.PING: outgoing_packet = Packet(PacketType.PING) outgoing_packet.add("pong") self.outgoing.send(outgoing_packet, clientIP, clientPort) if type == PacketType.LOGIN: outgoing_packet = Packet(PacketType.LOGIN) login = packet.get() password = packet.get() print("DEBUG: Login ->", login) print("DEBUG: Password ->", password) querry = "SELECT * FROM `users` WHERE `username`=? AND `password`=?" cursor.execute(querry, (login, password)) users = cursor.fetchall() if len(users) == 1: user = users[0] print("DEBUG: Login success") outgoing_packet.add(1) self.users.append([user[0], user[1], clientIP, clientPort]) else: print("DEBUG: Login failed") outgoing_packet.add(0) self.outgoing.send(outgoing_packet, clientIP, clientPort)
Receive data from a remote peer This function will WAIT UNTIL the whole packet has been received. @return: (data, remote_address) """ data, server = self.sock.recvfrom(4096) return data, server if __name__ == "__main__": sock = UdpSocket() packet = Packet(packet_type=PacketType.MESSAGE) packet.add("ping") sock.send(packet, "127.0.0.1", 5555) packet = Packet(packet_type=PacketType.LOGIN) packet.add("User_123") packet.add("Password_123") sock.send(packet, "127.0.0.1", 5555) data, server = sock.receive() packet = Packet(raw_data = data) packet.get_type() result = packet.get() if result == 1: print("Login Success") else: print("Login Failed")