Python3 透明网桥算法
生活随笔
收集整理的這篇文章主要介紹了
Python3 透明网桥算法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
?
import time#定義網(wǎng)橋1 b1 = {}port_list1 = [1, 2]#主機列表 L1 = ['a','b','c']L2 = ['d','e']L = [L1,L2]def get_time():#獲取每次記錄的時間 t = int(time.time()*10) #毫秒級# print(t) t = str(t)[-5:] #保留從毫秒開始的前五位# print(t)return tdef get_port(sendform):#確定當(dāng)前主機發(fā)送的消息進入哪個端口#模擬物理上的端口鏈接if sendform in L1:return 1else:return 2def deal_dic():#當(dāng)網(wǎng)橋的字典中元素超過三個時,排序并刪除時間最早的那個if len(b1) > 3:sorted(b1.items(), key=lambda x: x[1], reverse=False)for i in range(3, len(b1)):b1.pop(list(b1.keys())[0])def send(sendfrom, sendto):#傳入發(fā)送地址和目的地址 bridge = b1#獲取網(wǎng)橋接口 inport = get_port(sendfrom)#獲取時間 t = get_time()#遍歷所有的主機分組for l in L:if sendfrom in l:bridge[sendfrom] = [inport,t]if sendto in l:bridge[sendto] = [inport,t]print('同一網(wǎng)段,不轉(zhuǎn)發(fā)')elif sendto in bridge:print('查找成功,轉(zhuǎn)發(fā)至'+ str(bridge[sendto][0]) + '號端口')else:# 獲取非獲取幀的其他接口 other_port = [x for x in port_list1 if not x is inport]bridge[sendto] = [other_port[0],t]print('查找失敗,轉(zhuǎn)發(fā)至'+str(bridge[sendto][0]) + '號端口')while True:a = (input('請輸入發(fā)送站點:'))b = (input('請輸入目的站點:'))send(a, b)deal_dic()print(b1)?
?
?
注: 只實現(xiàn)了一個網(wǎng)橋和兩個網(wǎng)段之間的幀的處理
轉(zhuǎn)載于:https://www.cnblogs.com/emmm/p/10618977.html
總結(jié)
以上是生活随笔為你收集整理的Python3 透明网桥算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python用起来极度舒适的强大背后
- 下一篇: vue-cli 脚手架搭建