ICN数据包格式封装

来源:互联网 发布:js隐藏网页源代码 编辑:程序博客网 时间:2024/06/14 17:16

一个利用python binascii 实现 ICN数据包封装并利用UDP协议传输的示例:

from socket import *import binasciiimport jsonaddress = ('192.168.44.145', 12321)#address = ('192.168.100.150', 5000)s = socket(AF_INET,SOCK_DGRAM)#s.bind(address)#while True:   # data,addr = s.recvfrom(2048)    #if not data:     #   print("client has exist")      #  breakflag=1while flag:    EUID1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'    length=len(EUID1)    print(length)    s_EUID=binascii.a2b_hex(EUID1)    EUID2='bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'    d_EUID=binascii.a2b_hex(EUID2)    sev_type=binascii.a2b_hex(hex(22).replace('0x',''))    Head_len=binascii.a2b_hex(hex(36).replace('0x',''))    ICN_cert=binascii.a2b_hex(hex(4444).replace('0x',''))    packet_type=binascii.a2b_hex('0'+hex(1).replace('0x',''))    EUID3='dddddddddddddddddddddddddddddddd'    c_EUID=binascii.a2b_hex(EUID3)       ACK_flag=binascii.a2b_hex('0'+hex(1).replace('0x',''))    data=s_EUID+d_EUID+ sev_type+Head_len\    +ICN_cert+packet_type+c_EUID+ACK_flag    print(data)    if not data:          break     s.sendto(data,address)    flag=0#a = json.loads(data.decode('utf-8'))#print(a['params']['PubKey'])   s.close()

该函数实现的主要功能:
1、实现ICN信令的封装
2、将ICN信令转换为流格式
3、利用UDP将ICN信令内容作为载荷发送给目标地址

该函数测试结果:
接收端可正确接收到发送的信令,并正确地解析出载荷中的ICN相关内容。

函数释义:
关于字符串转换成16进制流格式的过程如下:
(1)hex()函数的返回值是16进制字符串
例如:0x1=hex(‘1’)
(2)a2b_hex()函数是将ASCII码转换成2进制数并用16进制表示,返回值中将字符串中每两位字符转换成一个16进制数字符串转换后,输出的字符串比输入的字符串缩短一半。

原创粉丝点击