【问题标题】:Finding a specific "route" through a network simulator通过网络模拟器找到特定的“路线”
【发布时间】:2017-08-07 08:56:54
【问题描述】:

我正在为一个涉及网络的游戏写一些东西。在这个游戏中,网络是一个类,每个节点的“连接”格式如下:

network.nodes = [router, computer1, computer2]
network.connections = [ [1, 2], [0], [0] ]

“network.nodes”中的每个迭代都与“network.connections”中的每个迭代并行工作,这意味着“network.connections[0]”代表“network.nodes[0]”连接到的所有节点。我正在尝试在网络类中编写一个简单的函数,该函数找到从路由器开始的路由 - “network.connections [0]” - 然后到特定的“节点”。我想得越多,答案似乎就越复杂。

在这种相当简单的情况下,它应该返回类似

[router, computer1]

如果我试图找到通往“computer1”的路由,这就是我想查看的内容,但我需要一些可以处理更复杂的网络模拟的东西。

它基本上是计算机网络的模拟器。但是在这个游戏中,我需要能够准确地知道某些东西可能会经过哪些节点才能到达特定目标。 任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: python networking simulation simulator


    【解决方案1】:

    如何删除.nodes.connections 并将它们保存在一个数据结构中,如字典。

    network.nodes = {"router": [computer1, computer2],
                     "computer1": [router],
                     "computer2": [router]
                     }
    

    您甚至可以删除字符串作为键并使用对象本身:

    network.nodes = {router: [computer1, computer2],
                     computer1: [router],
                     computer2: [router]
                     }
    

    这样,如果您需要访问路由器的连接,您会这样做:

    >>>network.nodes[router]
    [computer1, computer2]
    

    因为我对你的项目没有完整的了解,所以我不能只给你一个函数来做到这一点,但我可以尝试为你指明正确的方向。

    如果您将网络“地图”构建为字典,并且network.nodes[router] 返回[computer1, computer2],那么接下来您需要做的是network.nodes[computer1]network.nodes[computer2]

    在您的 cmets 防火墙示例中,您将重建网络映射以包含防火墙。所以字典看起来像这样:

    network.nodes = {router: [firewall, computer2],
                    firewall: [computer1]
                    computer1: [firewall],
                    computer2: [router]
                    }
    

    【讨论】:

    • 实际上,这可能会有所帮助。但并不能完全解决问题。我可能会接受你的建议,但我仍然需要一个函数来返回到达特定节点所需的每条路线。
    • 例如,如果路由器和“computer1”之间有防火墙,因此路由器和“computer1”没有直接连接,我需要一个可以通过每个节点的程序,并且返回类似 [router, firewall, computer1]
    • 其实我可能刚刚想通了。不完全是我想要的答案,但我知道如何根据您的建议解决它,以便它起作用。我来这里寻求帮助的原因是因为根据我的设置方式,连接可能会永远持续下去。所以我需要一个函数,它可以遍历所有可能的路径并返回我需要的那个。但是使用您的方法,我可以限制节点可以来自路由器的跳数。谢谢。我很感激。
    猜你喜欢
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多