Example #1
0
def main(args):
    # Packet encoder
    encoder = NdnTlvEncoder(
    ) if args.format == 'ndntlv' else SimpleStringEncoder

    # Generate interest packet
    first_interest: Interest = Interest(args.name)
    encoded_first_interest = encoder.encode(first_interest)

    # Send interest packet
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.settimeout(5)
    sock.bind(("0.0.0.0", 0))
    try:
        resolved_hostname = socket.gethostbyname(args.ip)
    except:
        print("Resolution of hostname failed.")
        sys.exit(-2)
    sock.sendto(encoded_first_interest, (resolved_hostname, args.port))

    # Receive content object
    try:
        wire_packet_first, addr = sock.recvfrom(8192)
    except:
        print("Timeout.")
        sys.exit(-1)

    # Wait
    time_to_wait = int(encoder.decode_data(wire_packet_first)[1])
    print("Waiting for result: " + str(time_to_wait))
    time.sleep(time_to_wait * 1.2)

    # Send second interest
    new_components = args.name.split("/")[1:-1]
    new_components.append("resultpNFN")
    new_name = "/" + '/'.join(new_components)
    second_interest: Interest = Interest(new_name)
    encoded_second_interest = encoder.encode(second_interest)
    sock.sendto(encoded_second_interest, (resolved_hostname, args.port))

    # Receive result
    try:
        wire_packet_second, addr = sock.recvfrom(8192)
    except:
        print("Timeout.")
        sys.exit(-1)

    # Print
    if args.plain is False:
        printer = NdnTlvPrinter(wire_packet_second)
        printer.formatted_print()
    else:
        encoder = NdnTlvEncoder()
        if encoder.is_content(wire_packet_second):
            sys.stdout.buffer.write(
                encoder.decode_data(wire_packet_second)[1] + b"\n")
        else:
            sys.exit(-2)
Example #2
0
class test_NdnTlvEncoder(unittest.TestCase):
    """Test the NdnTlvEncoder"""
    def setUp(self):
        self.encoder = NdnTlvEncoder()

    def tearDown(self):
        pass

    def test_Interest_Creation_no_wireformat(self):
        """Test the creation of an interest message with no wireformat given"""
        name: Name = Name("/test/data")
        i1: Interest = Interest(name)
        enc_i1 = self.encoder.encode(i1)
        self.assertEqual(enc_i1[0], 0x5)
        self.assertTrue(self.encoder.is_interest(enc_i1))
        self.assertFalse(self.encoder.is_content(enc_i1))
        self.assertFalse(self.encoder.is_nack(enc_i1))
        dec_i1 = self.encoder.decode(enc_i1)
        self.assertEqual(dec_i1, i1)

    def test_Content_Creation_no_wireformat(self):
        """Test the creation of a content object message with no wireformat given"""
        name: Name = Name("/test/data")
        c1: Content = Content(name, "HelloWorld")
        enc_c1 = self.encoder.encode(c1)
        self.assertEqual(enc_c1[0], 0x6)
        self.assertFalse(self.encoder.is_interest(enc_c1))
        self.assertTrue(self.encoder.is_content(enc_c1))
        self.assertFalse(self.encoder.is_nack(enc_c1))
        dec_c1 = self.encoder.decode(enc_c1)
        self.assertEqual(dec_c1, c1)

    def test_Nack_Creation_no_wireformat(self):
        """Test the creation of a nack object message with no wireformat given"""
        name: Name = Name("/test/data")
        i1: Interest = Interest(name)
        n1: Nack = Nack(name, NackReason.NO_ROUTE, interest=i1)
        enc_n1 = self.encoder.encode(n1)
        self.assertEqual(enc_n1[0], 0x64)
        self.assertEqual(enc_n1[3], 0x03)
        self.assertEqual(enc_n1[4], 0x20)
        self.assertFalse(self.encoder.is_interest(enc_n1))
        self.assertFalse(self.encoder.is_content(enc_n1))
        self.assertTrue(self.encoder.is_nack(enc_n1))
        dec_n1 = self.encoder.decode(enc_n1)
        self.assertEqual(dec_n1, n1)
Example #3
0
def run_singel_interest(format, ip, port, plain, interestName, logger, sock):
    # Packet encoder
    # print("\n Sending Interest "+ str(interestName)+"\n")
    t1=time.time()
    encoder = NdnTlvEncoder() if format == 'ndntlv' else SimpleStringEncoder
    # Generate interest packet
    interest: Interest = Interest(interestName)
    encoded_interest = encoder.encode(interest)

    # Send interest packet
    try:
        resolved_hostname = socket.gethostbyname(ip)
    except:
        print("Resolution of hostname failed.")
        sys.exit(-2)
    sock.sendto(encoded_interest, (resolved_hostname, port))

    # Receive content object
    try:
        wire_packet, addr = sock.recvfrom(8192)
    except:
        print("Timeout.")
        sys.exit(-1)

    # Print
    # if plain is False:
    #     printer = NdnTlvPrinter(wire_packet)
    #     printer.formatted_print()
    # else:
    #     encoder = NdnTlvEncoder()
    #     if encoder.is_content(wire_packet):
    #         sys.stdout.buffer.write(encoder.decode_data(wire_packet)[1])
    #     else:
    #         sys.exit(-2)

    # logger.info("Content Received "+ str(interestName))
    #print("\n Content Received "+ str(interestName)+"\n")
    t2 = time.time()
    print("The response time for"+str(interestName)+","+ str(t1) + "," + str(t2) + "," +str(t2-t1))
Example #4
0
File: Peek.py Project: tairun/PiCN
def main(args):

    # Packet encoder
    encoder = NdnTlvEncoder(
    ) if args.format == 'ndntlv' else SimpleStringEncoder()

    # Generate interest packet
    interest: Interest = Interest(args.name)
    encoded_interest = encoder.encode(interest)

    # Send interest packet
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.settimeout(args.timeout)
    sock.bind(("0.0.0.0", 0))
    try:
        resolved_hostname = socket.gethostbyname(args.ip)
    except:
        print("Resolution of hostname failed.")
        sys.exit(-2)
    sock.sendto(encoded_interest, (resolved_hostname, args.port))

    # Receive content object
    try:
        wire_packet, addr = sock.recvfrom(8192)
    except:
        print("Timeout.")
        sys.exit(-1)

    # Print
    if args.plain is False:
        printer = NdnTlvPrinter(wire_packet)
        printer.formatted_print()
    else:
        encoder = NdnTlvEncoder()
        if encoder.is_content(wire_packet):
            sys.stdout.buffer.write(encoder.decode_data(wire_packet)[1])
        else:
            sys.exit(-2)