def request_handler(self, data, address): packet = ICNPacket() packet.byte2icn(data) packet.print_packet() payload = packet.payload cmd_type = int(binascii.b2a_hex(payload[:1]), 16) reply = ICNPacket() reply.setHeader("92500000000000000000000000000925", "c11e70000000000000000000000c11e7", "00") if cmd_type == 1: reply.setPayload(self.register(payload)) elif cmd_type == 3: reply.setPayload(self.query_na(payload)) reply.fill_packet() reply.print_packet() self.send(reply, address)
def send(self, packet): data = packet.icn2byte() if len(data) > self.UDP_MTU: return None sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(data, (self.ncs_address, self.ncs_port)) sock.settimeout(1) reply = None try: ack, remote_address = sock.recvfrom(self.UDP_MTU) print(ack) reply = ICNPacket() reply.byte2icn(ack) reply.print_packet() except socket.timeout: logger.error("Timeout") finally: sock.close() return reply