• 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)
    
     

     

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

  • 相关阅读:
    JS判断页面是否加载完成
    简单的前端验证码
    如何让旧浏览器支持HTML5新标签
    JSON使用(4)
    JSON语法(3)
    JSON简介(2)
    JSON教程(1)
    jQuery-noConflict()
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/emmm/p/10618977.html
Copyright © 2020-2023  润新知