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 t
def get_port(sendform):
#确定当前主机发送的消息进入哪个端口
#模拟物理上的端口链接
if sendform in L1:
return 1
else:
return 2
def 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)

注: 只实现了一个网桥和两个网段之间的帧的处理
Python3 透明网桥算法的更多相关文章
- 计算机网络透明网桥算法时间戳c++
要交CG的兄弟们别抄啊,撞上了严nan谁都不会放过的 好久没写博客了,这次是老师布置的作业,做出来一种,觉得写得很不好,第一种方法把情况都写死在代码里了. 上代码 #include<iostre ...
- 2017-2018-2 20179207 《网络攻防技术》第十三周作业 python3实现SM234算法
国密算法SM234 的python3实现 国家标准 GM/T 0002-2012 <SM4分组密码算法> GM/T 0003.1-2012 <SM2椭圆曲线公钥密码算法 第1部分:总 ...
- Python3实现Two-Pass算法检测区域连通性
技术背景 连通性检测是图论中常常遇到的一个问题,我们可以用五子棋的思路来理解这个问题五子棋中,横.竖.斜相邻的两个棋子,被认为是相连接的,而一样的道理,在一个二维的图中,只要在横.竖.斜三个方向中的一 ...
- 关于 centos 7系统,iptables透明网桥实现【转载请注明】
首先建立网桥:(使用bridge) 示例 桥接eth0 与 eth1 网口 /sbin/modprobe bridge /usr/sbin/brctl addbr br0 /sbin/ifup ...
- sort、sorted高级排序-Python3.7 And 算法<七>
1.sort(*, key=None, reverse=False) sort()接受两个参数,这两个参数只能通过关键字(关键字参数)传递. 参数key:带一个参数的函数(排序时,会依次传入列表的每一 ...
- python3的C3算法
一.基本概念 1. mro序列 MRO是一个有序列表L,在类被创建时就计算出来. 通用计算公式为: mro(Child(Base1,Base2)) = [ Child ] + merge( mro(B ...
- python3数据结构与算法
python内置的数据结构包括:列表(list).集合(set).字典(dictionary),一般情况下我们可以直接使用这些数据结构,但通常我们还需要考虑比如搜索.排序.排列以及赛选等一些常见的问题 ...
- Python3 决策树ID3算法实现
# -*- coding: utf-8 -*- """ Created on Wed Jan 24 19:01:40 2018 @author: markli 采用信息增 ...
- Python3 kmeans 聚类算法
# -*- coding: utf-8 -*- """ Created on Wed Jan 10 19:18:56 2018 @author: markli " ...
随机推荐
- cocos ide使用binding-generator导出来的c++类
time:2015/03/19 cocos版本:3.2 描述:用了ide运行一个实例[1]的时候需要增加c++类,正确导出来之后,直接使用vs2012启动是没有问题的,但是使用ide启动却提示找不到模 ...
- Python 处理脚本的命令行参数(二):使用click
安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...
- U-Mail邮件营销可视化编辑设计邮件模板so easy
相信每位看过军事演习的朋友都知道,现代战争越来越就像一场沙盘演练,真正做到了“运筹帷幄之中决战千里之外”,后方坐镇指挥战斗的能够将前线战场变得透明,这就叫“可视化战争”,做到了<孙子兵法> ...
- 041队列queue(重要,多线程使用)
内容:队列类型.方法.使用 ###############queue定义了3种信息列队模式类Queue([maxsize]):FIFO列队模式LifoQueue([maxsize]):LIFO列队模式 ...
- zeromq 笔记
一. 当执行zmq_bind后会进入mute state,直到有进入或者出去的连接发生才会进入ready state 在mute state状态下会根据不同的套接字类型决定是丢弃消息还是阻塞 可参考z ...
- strerror的坑
最近写的一段代码,总是出core,精简了一下,稳定复现. #include <stdio.h> #include <errno.h> int main() { printf(& ...
- angularJs的工具方法1
一.angular.bind(); 改this指向 <!DOCTYPE HTML> <html ng-app> <head> <meta http-equ ...
- web-ctf随机数安全
rand() 函数在产生随机数的时候没有调用 srand(),则产生的随机数是有规律可询的. 产生的随机数可以用下面这个公式预测 : state[i] = state[i-3] + state[i-3 ...
- 【vue】todolist小练习
参考链接: http://www.imooc.com/learn/694 http://www.cnblogs.com/Chen-XiaoJun/p/6238137.html http://blog. ...
- 2019.2.27 Eclipse中的Tomcat设置Tomcat服务器手动重启
1.打开Tomcat的设置界面 2.找到Modules界面 3.去掉,就改为手动了