欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Python3 透明网桥算法

发布时间:2024/4/15 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Python3 透明网桥算法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 

 

import time#定义网桥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):#确定当前主机发送的消息进入哪个端口#模拟物理上的端口链接if sendform in L1:return 1else:return 2def deal_dic():#当网桥的字典中元素超过三个时,排序并删除时间最早的那个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):#传入发送地址和目的地址 bridge = b1#获取网桥接口 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('同一网段,不转发')elif sendto in bridge:print('查找成功,转发至'+ 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('查找失败,转发至'+str(bridge[sendto][0]) + '号端口')while True:a = (input('请输入发送站点:'))b = (input('请输入目的站点:'))send(a, b)deal_dic()print(b1)

 

 

 

注: 只实现了一个网桥和两个网段之间的帧的处理

转载于:https://www.cnblogs.com/emmm/p/10618977.html

总结

以上是生活随笔为你收集整理的Python3 透明网桥算法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。