ICN数据包格式封装

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

from socket import *
import binascii
import json
address = ('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")
      #  break
flag=1
while 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进制数字符串转换后,输出的字符串比输入的字符串缩短一半。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值