Beispiel #1
0
 public void PrintTable(int step = -1)
 {
     lock (ThreadLock)
     {
         if (step != -1)
         {
             Console.WriteLine("Simulation step {0} of router {1}", step, ParentNode.GetIP());
         }
         Console.WriteLine("[Source IP]\t[Destination IP]\t[Next Hop]\t[Metric]\n");
         foreach (RoutingState state in States)
         {
             Console.WriteLine("{0}\t{1}\t\t{2}\t\t{3}",
                               ParentNode.GetIP(),
                               state.DestinationNode.GetIP(),
                               state.NextNode.GetIP(),
                               (state.Metric >= MAX_HOPS + 1) ? "inf" : state.Metric.ToString()
                               );
         }
         Console.WriteLine(""); //Formatting
     }
 }
Beispiel #2
0
        public void PrintNodes()
        {
            foreach (NetworkNode n in NetworkNodes)
            {
                Console.WriteLine("Router: {0}", n.GetIP());
                Console.WriteLine("Connections:");
                foreach (Edge e in n.GetEdges())
                {
                    NetworkNode en = e.GetLeft() == n?e.GetRight() : e.GetLeft();

                    Console.WriteLine("{0} -- {1}", n.GetIP(), en.GetIP());
                }
                Console.WriteLine();
            }
        }
Beispiel #3
0
        public void Generate(int Networks)
        {
            if (Networks <= 1)
            {
                throw new ArgumentException("Cannot create a network with less than two networks!");
            }

            NetworkNodes.Clear();

            //Generate network point nodes
            List <string> uniqueIPs = GenerateUniqueIPs(Networks);

            Console.WriteLine("Generated IP Addresses: ");
            foreach (string ip in uniqueIPs)
            {
                Console.WriteLine(ip);
                NetworkNodes.Add(new NetworkNode(ip, this));
            }

            Console.WriteLine("Generated connections: ");
            //Generate a randomly connected network graph
            for (int i = 0; i < Networks; i++)
            {
                //Generate a random network to target
                int r = RandomGenerator.Next(Networks);
                while (r == i)
                {
                    r = RandomGenerator.Next(Networks);
                }

                NetworkNode currentNetwork = NetworkNodes[i];
                NetworkNode targetNetwork  = NetworkNodes[r];

                Edge e = new Edge(currentNetwork, targetNetwork);
                currentNetwork.AddEdge(e);
                targetNetwork.AddEdge(e);

                Console.WriteLine("{0} -- {1}", currentNetwork.GetIP(), targetNetwork.GetIP());
            }
        }