IoT PoC项目中需要展示视频采集源进行wifi切换后(表明视频采集源端发生了移动),接收端观看到的视频的流畅度,以及当接收端进行移动时,检测视频的流畅度,故需要一个模块周期性地探测本地IP是否变化,以指示设备的移动性。

操作:当设备做为视频接受者发生移动时,在IP变化后立刻向视频发送者发送携带有新IP的内容请求消息

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import subprocess
from time import sleep
import logging.config
from socket import *
import binascii
import json
import redef search(pattern,text,flag):    #print(text)m=re.search(pattern,text)if m is not None:return m.group(flag)def get_ip(cmd):ip_cur = '0.0.0.0'while ip_cur == '0.0.0.0':obj = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)obj.wait()lines = obj.stdout.readlines()                        for eachline in lines:eachline= eachline.decode('gbk')#print(eachline)strs='IPv4 地址'if strs in eachline:               content=search('IPv4 地址 . . . . . . . . . . . . :(.*?)\r\n',eachline,1)#print(content)ip_cur = str(content)print(ip_cur)break        return ip_curdef send_data_request(S_EUID,D_EUID,C_EUID,NA,port):address = (NA, port)s = socket(AF_INET,SOCK_DGRAM)    flag=1while flag:        s_EUID=binascii.a2b_hex(S_EUID)        d_EUID=binascii.a2b_hex(D_EUID)sev_type=binascii.a2b_hex(hex(22).replace('0x',''))Head_len=binascii.a2b_hex(hex(36).replace('0x',''))ICN_check=binascii.a2b_hex(hex(4444).replace('0x',''))packet_type=binascii.a2b_hex('0'+hex(1).replace('0x',''))      c_EUID=binascii.a2b_hex(C_EUID)            data=s_EUID+d_EUID+ sev_type+Head_len\+ICN_check+packet_type+c_EUIDprint(len(data))if not data:  break  s.sendto(data,address)flag=0  s.close()def ip_cmp(cmd,S_EUID,D_EUID,C_EUID,NA,port,IP_cur,get_cnt):    ip_next=get_ip(cmd)get_cnt=get_cnt+1if time_flag:if ip_cur!='0.0.0.0' and ip_next !='0.0.0.0':if ip_cur == ip_next:change_flag=0print('change_flag='+str(change_flag))else:change_flag=1print('change_flag='+str(change_flag))                send_data_request(S_EUID,D_EUID,C_EUID,NA,port)return ip_nextif __name__ == '__main__':cmd='ipconfig'get_cnt=0 #ip 获取次数计数器T_interval=0.1 #ip 获取周期ip_cur='0.0.0.0'    ip_next='0.0.0.0'ip_cur=get_ip(cmd)#ip_cur='192.168.110.1'get_cnt=get_cnt+1time_flag=1S_EUID='aaaa'D_EUID='bbbb'C_EUID='cccc'NA='192.168.1.100' port=35000while time_flag:ip_next=ip_cmp(cmd,S_EUID,D_EUID,C_EUID,NA,port,ip_cur,get_cnt)print('IP_next='+ip_next)sleep(T_interval)ip_cur=ip_nextprint('IP_cur='+ip_next)

本代码中,利用ipconfig指令获取IP地址,该方法可能存在一定的问题,故还可采用其他的方法获取IP,如用socket方法可以获取本地的外网IP,这里不赘述,可再百度相关的方法。

利用python检测IP地址变化并触发事件相关推荐

  1. python批量telnet检测IP地址的端口是否开放

    python批量telnet检测IP地址的端口是否开放 需求 代码 示例 需求 需要检查多个端口是否开放,没有找到第三方工具和服务来快速测通,就自己用python写了个脚本.原理是通过telnet来实 ...

  2. python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...

    html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...

  3. php试题判断ip是否合法,php检测IP地址是否合法的方法

    这几天一直在用php做一个关于IP地址的工具大全,这其中就涉及到了一个最为关键的逻辑.就是用户在提交IP地址时,为了防止用户勿输入或捣乱,就要对提交的IP地址做一个简单的判断. 下面提供几种利用php ...

  4. 用Python更改IP地址(转)

    用Python更改IP地址(转) 大多数用笔记本电脑的朋友都有一个烦恼,那就是在家里和公司的IP地址不一样,上班和回家后都得来回切换IP地址,两个字"麻烦".最近在写Python, ...

  5. Python对IP地址列表排序、对列表进行去重、IP地址与MAC地址组合的多个元组的列表排序

    1.python对IP地址列表排序 # -*- coding: utf-8 -*-import socket listIP = ['10.5.11.1', '192.168.1.33', '10.5. ...

  6. python对ip地址排序、对列表进行去重

    一:使用python对ip地址排序所用代码示例一: import socketiplist = ['10.5.11.1','192.168.1.33','10.5.2.4','10.5.1.3','1 ...

  7. Java检测IP地址输入是否正确

    题目描述: 1.编写一个方法验证一个IP地址的格式是否正确,正确返回true,不正确返回false,该方法可定义如下 public boolean isRightIP(String ip) 其中,参数 ...

  8. linux添加ip白名单_centOS7 下利用iptables配置IP地址白名单的方法

    编辑iptables配置文件,将文件内容更改为如下,则具备了ip地址白名单功能 #vim /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FO ...

  9. python解码IP地址

    互联网上分布着很多设备,如电脑.手机.智能手表等.设备与设备之间会互相通信,如你给朋友发送一条微信语音信息,其实就是你的手机在与朋友的手机进行通信. 但是,这条信息为什么会准确到达你朋友的手机,而不是 ...

最新文章

  1. smarty mysql demo_PHP Smarty模版简单使用方法
  2. System.setProperty()
  3. App正义联盟VS App Store、领英上线视频故事、亚马逊进军游戏流媒体| Decode the Week...
  4. [转]Installing Memcached on Windows
  5. 使用C#进行系统编程
  6. STL sector 应用
  7. python中的与或非_「Python基础」 While 循环语句
  8. Chrome 将不再允许 https:// 页面加载 HTTP 资源
  9. python 引入同一路径的类_Python实现Wordcloud生成词云图的示例
  10. java 全选 反选取值_全选反选以及获取选中的数据
  11. 多个切点 boot spring_spring基于aspectJ的切点表示
  12. 搜狗浏览器连接海康摄像头,无法显示画面
  13. Flash loader demo下载与使用之最小系统STM32C8T6使用USB转TTL串口下载
  14. 分享hm77芯片组bios工具 联想m490添加inter7265ac 白名单bios
  15. 二级计算机excel以宏保存,excel宏保存 设置宏保存位置的操作方法
  16. 201671030107词频统计软件项目报告
  17. exsi服务器如何支持usbkey,ESXi直通USB键鼠
  18. 计算机网络实验指导gns3,计算机网络实践教程——基于GNS3网络模拟器(CISCO技术)...
  19. 双网口以太网IO模块的优势
  20. 读书笔记(SRE:Google运维解密):第22章 处理连锁故障

热门文章

  1. 国内实验室信息化管理现状
  2. 【思维进阶】新手小白如何练习写作
  3. 厦大生物科学类要考计算机等级吗,厦门大学生命科学学院调剂经验分享
  4. 【tio-websocket】2、SpringBoot整合tio-websocket-server
  5. 学校员工管理系统流程图以及项目源码(c++超详细)
  6. 用Python分析过去10年地震分布~
  7. windows找不到文件 pythonw
  8. 鸿蒙HarmonyOS壁纸,万物皆鸿蒙(无水印版,超4K)
  9. A.Jelly (简单BFS三维)
  10. Python实现微信接收消息推送(附源码)