国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python檢測IP地址變化并觸發(fā)事件

2020-02-16 00:21:11
字體:
供稿:網(wǎng)友

IoT PoC項目中需要展示視頻采集源進(jìn)行wifi切換后(表明視頻采集源端發(fā)生了移動),接收端觀看到的視頻的流暢度,以及當(dāng)接收端進(jìn)行移動時,檢測視頻的流暢度,故需要一個模塊周期性地探測本地IP是否變化,以指示設(shè)備的移動性。

操作:當(dāng)設(shè)備做為視頻接受者發(fā)生移動時,在IP變化后立刻向視頻發(fā)送者發(fā)送攜帶有新IP的內(nèi)容請求消息

代碼如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-import timeimport subprocessfrom time import sleep import logging.configfrom socket import *import binasciiimport jsonimport 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=1 while 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_EUID  print(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+1 if time_flag:  if ip_cur!='0.0.0.0' and ip_next !='0.0.0.0':   if ip_cur == ip_next:    change_flag=0    print('change_flag='+str(change_flag))   else:    change_flag=1    print('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 獲取次數(shù)計數(shù)器 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+1 time_flag=1 S_EUID='aaaa' D_EUID='bbbb' C_EUID='cccc' NA='192.168.1.100'  port=35000 while 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_next  print('IP_cur='+ip_next)

本代碼中,利用ipconfig指令獲取IP地址,該方法可能存在一定的問題,故還可采用其他的方法獲取IP,如用socket方法可以獲取本地的外網(wǎng)IP,這里不贅述,可再百度相關(guān)的方法。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鸡泽县| 厦门市| 吴忠市| 四平市| 兰考县| 鄢陵县| 潍坊市| 乳山市| 确山县| 留坝县| 吉林市| 漾濞| 通辽市| 怀来县| 抚顺县| 界首市| 长宁县| 平舆县| 长武县| 天长市| 博客| 西乌珠穆沁旗| 全椒县| 胶南市| 阿拉尔市| 北宁市| 嘉禾县| 攀枝花市| 浮山县| 石阡县| 太仓市| 新营市| 中江县| 莆田市| 古蔺县| 平武县| 普兰县| 万山特区| 阿拉尔市| 临夏市| 新余市|