通过网络模拟器查找特定的“路线”

时间:2017-03-16 09:17:36

标签: python networking simulation simulator

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

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”的路线,那就是我想看到的,但是我需要一些可以用于更复杂的网络模拟的东西。

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

1 个答案:

答案 0 :(得分:0)

如何删除.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]

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

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