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 " ...
随机推荐
- 将csv导出json格式
将csv导出json格式 import os,csv,json cf = open('D:\OneDrive\\Tech\\Script\\Powershell_Script\\Uxin_work\\ ...
- Python初学者第十二天 购物车程序小作业
12day 作业题目: 购物车程序 作业需求: 数据结构: goods = [ {"name": "电脑", "price": 1999}, ...
- Directed Graphs
有向图 Introduction 就是边是有方向的,像单行道那样,也有很多典型的应用. 点的出度指从这个点发出的边的数目,入度是指向点的边数.当存在一条从点 v 到点 w 的路径时,称点 v 能够到达 ...
- java构造方法-this关键字的用法
public class constructor { public static void main(String[] args) { // TODO Auto-generated method st ...
- SQL脚本修改表结构
SQL脚本修改表结构 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default ...
- vue笔记2
vue项目目录 <pre> ├── build // 构建服务和webpack配置 ├── config // 项目不同环境的配置 ├── dist // 项目build目录 ├── in ...
- c++ 基类,派生类的类型兼容性
#include <iostream> using namespace std; class CFather { public: void display() const { cout&l ...
- 用Web技术开发客户端(一)
http://www.cnblogs.com/lefan/archive/2012/12/27/2836400.html 范怀宇(@duguguiyu)分享了<豌豆荚2.0重构时遇到的坑> ...
- 指令集 与 cpu
http://cache.baiducontent.com/c?m=9d78d513d9d437ab4f9d9e697c15c0116e4381132ba7a1020ca08448e2732d4050 ...
- BZOJ1468:Tree(点分治)
Description 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K Input N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是 ...