socket数据包固定位置内容变化的判断

该代码实现了一个使用Python的UDP套接字进行通信的例子,包括发送数据包,接收响应,处理接收到的数据,并根据特定位置的数据变化进行计数或重置计数器的操作。

一、建立socket连接

packet=[0x55,0xab,00,00,00,00,00,00,00,00]#发送数据包内容
cmdpacket = bytearray(packet)
socket_ctl = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#定义一个UDP协议套接字,udp协议不区分客户端和服务端,只有发送和接收
socket_ctl.bind(("", 5051))#定义发送端IP和端口,不输入默认电脑IP
IP_0=str("172.16.2.1")#将输入文本值定义到变量IP
COM_0=int(5050)#将输入文本值定义到变量端口
print(packet)#打印发送的字符包
controller=(IP_0,COM_0)#定义目标socket  IP地址和端口号
socket_ctl.sendto(cmdpacket,controller)#发送socket信息
bdata, client = socket_ctl.recvfrom(1500)#接收socket目标对象发送的数据,并赋值给指定变量
print(client)#打印目标对象IP和端口号

二、对接收数据包进行处理

list_bdata=list(bdata)#将获取数据转为列表的形式
new_pha_36=list_bdata[36] & 127#获取指定位置的最新数据

三、对变化信息进行判断

list_bdata=list(bdata)#将获取数据转为列表的形式
new_pha_36=list_bdata[36] & 127#获取指定位置的最新数据

四、执行固定方法

if pha_36_flag==1:#标记值变化时执行操作
    print("标记值为1 计时器置零")
    number_36=0
    pha_36_flag=0
else:#未变化时执行操作
    number_36 +=1
    print("计时器累加",number_36)  

完成代码:

import sys
import  socket
import os

number_36=0#计数器赋初始值
old_pha_36=0#对比数据初始值
packet=[0x55,0xab,00,00,00,00,00,00,00,00]#发送数据包内容
cmdpacket = bytearray(packet)
socket_ctl = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#定义一个UDP协议套接字,udp协议不区分客户端和服务端,只有发送和接收
socket_ctl.bind(("", 5051))#定义发送端IP和端口,不输入默认电脑IP
IP_0=str("172.16.2.1")#将输入文本值定义到变量IP
COM_0=int(5050)#将输入文本值定义到变量端口
print(packet)#打印发送的字符包
controller=(IP_0,COM_0)#定义目标socket  IP地址和端口号
socket_ctl.sendto(cmdpacket,controller)#发送socket信息
bdata, client = socket_ctl.recvfrom(1500)#接收socket目标对象发送的数据,并赋值给指定变量
print(client)#打印目标对象IP和端口号

list_bdata=list(bdata)#将获取数据转为列表的形式
new_pha_36=list_bdata[36] & 127#获取指定位置的最新数据

if old_pha_36 !=new_pha_36:#对数据是否发生变化进行判断
    pha_36_flag=1#更改标记值
    old_pha_36=new_pha_36#更新旧数据内容

if pha_36_flag==1:#标记值变化时执行操作
    print("标记值为1 计时器置零")
    number_36=0
    pha_36_flag=0
else:#未变化时执行操作
    number_36 +=1
    print("计时器累加",number_36)  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值