Beispiel #1
0
 public bool RouteCompare(RoutingPacket route)
 {
     if (nodeRoute.Count != route.GetNodeRoute().Count)
     {
         return(false);
     }
     else
     {
         for (int i = 0; i < nodeRoute.Count; i++)
         {
             if (!nodeRoute[i].Equals(route.GetNodeRoute()[i]))
             {
                 return(false);
             }
         }
         return(true);
     }
 }
Beispiel #2
0
        public bool dSendMessage(Message message, RoutingPacket route)
        {
            Console.WriteLine("Routing Packet Selected: {0}", route.GetRouteAsString());
            List <MobileNode> nodes = route.GetNodeRoute();

            Console.WriteLine("Beginning Message Transmission from Source Node " + nodes[0].GetNodeID());
            for (int i = 1; i < nodes.Count; i++)
            {
                Console.WriteLine("Sending Message from {0} to {1}.", nodes[i - 1].GetNodeID(), nodes[i].GetNodeID());
            }
            Console.WriteLine("Received Message at Destination Node " + nodes[nodes.Count - 1].GetNodeID());
            return(true);
        }
Beispiel #3
0
 public bool DSRSMessage(Message message, RoutingPacket route, int step)
 {
     if (message.GetDestinstationNode().Equals(this))
     {
         // Record the message received
         this.received++;
         message.calcMsgSpeed(message.GetSourceNode(), message.GetDestinstationNode());
         Console.WriteLine("Message {0} received at Node {1}.", message.GetMessageID(), nodeID);
         return(true);
     }
     else
     {
         // Here randomly get a node to drop the message
         if (this.PacketDrop() == true)
         {
             Console.WriteLine("Message {0} dropped by Node {1}.", message.GetMessageID(), nodeID);
             return(false);
         }
         Console.WriteLine("Relaying Message {0} through Node {1}.", message.GetMessageID(), nodeID);
         return(route.GetNodeRoute()[++step].DSRSMessage(message, route, ++step));
     }
 }
        // Adding SendMessageSADSR here

        public bool SendMessageDSR(Message message)
        {
            MobileNode    sourceNode      = message.GetSourceNode();
            MobileNode    destinationNode = message.GetDestinstationNode();
            RoutingPacket route           = sourceNode.GetBestRouteDSR(destinationNode);

            // If no known route found
            if (route == null)
            {
                Console.WriteLine("No Known Route to Destination.");
                sourceNode.RouteDiscoveryDSR(destinationNode, this); // Perform Route Discovery
                route = sourceNode.GetBestRouteDSR(destinationNode); // Attempt to assign newly found best route
                if (route == null)
                {
                    Console.WriteLine("No Route to Destination.");
                    return(false);
                }
            }

            Console.WriteLine("Sending Message:");
            Console.WriteLine("Source Node: " + sourceNode.GetNodeID());
            Console.WriteLine("Destination Node: " + destinationNode.GetNodeID());
            Console.WriteLine("Route Chosen: " + route.GetRouteAsString());

            List <MobileNode> nodes = route.GetNodeRoute();

            Console.WriteLine("Beginning Message Transmission from Source Node " + sourceNode.GetNodeID());
            for (int i = 1; i < nodes.Count; i++)
            {
                Console.WriteLine("Sending Message from {0} to {1}.", nodes[i - 1].GetNodeID(), nodes[i].GetNodeID());
                nodes[i - 1].TransmitPacket();
                nodes[i].ReceiveProcessPacket();
            }
            Console.WriteLine("Received Message at Destination Node " + destinationNode.GetNodeID());
            return(true);
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            SimulationEnvironment sTest = new SimulationEnvironment();

            sTest.GetNodes().Add(new MobileNode(0, 0, 100));
            sTest.GetNodes().Add(new MobileNode(100, 110, 100));
            sTest.GetNodes().Add(new MobileNode(110, 100, 100));
            sTest.GetNodes().Add(new MobileNode(198, 198, 100));
            sTest.GetMessages().Add(new Message(sTest.GetNodes()[0], sTest.GetNodes()[3]));
            foreach (MobileNode node in sTest.GetNodes())
            {
                node.Print();
                foreach (MobileNode n in sTest.GetNodes())
                {
                    if (!node.Equals(n))
                    {
                        if (node.IsWithinRangeOf(n))
                        {
                            Console.WriteLine("Node {0} is within range. Distance: {1}", n.GetNodeID(), node.GetDistance(n));
                        }
                        else
                        {
                            Console.WriteLine("Node {0} is not within range. Distance: {1}", n.GetNodeID(), node.GetDistance(n));
                        }
                    }
                }
                Console.WriteLine();
            }
            sTest.GetMessages()[0].Print();

            List <RoutingPacket> packets = sTest.GetNodes()[0].DSRRouteDiscovery(sTest.GetNodes()[3], sTest);
            // Calling SA-DSR
            RoutingPacket optRoute = sTest.GetNodes()[0].SADSRRouteDiscovery(sTest.GetNodes()[3], sTest);
            // Calling Modified SA-DSR
            RoutingPacket optRoute2 = sTest.GetNodes()[0].MSADSRRouteDiscovery(sTest.GetNodes()[3], sTest);

            Console.WriteLine("{0} Routes Found.", packets.Count);

            foreach (RoutingPacket route in packets)
            {
                Console.WriteLine("Route:");
                Console.WriteLine("==============================");
                foreach (MobileNode node in route.GetNodeRoute())
                {
                    Console.Write("{0} ", node.GetNodeID());
                }
                Console.WriteLine();
                Console.WriteLine("==============================");
            }
            // Testing SA-DSR
            Console.Write("SA-DSR Optimal Route: ");
            foreach (MobileNode node in optRoute.GetNodeRoute())
            {
                Console.Write("{0} ", node.GetNodeID());
            }
            Console.WriteLine();
            Console.WriteLine("==============================");

            // Testing modified SA-DSR
            Console.Write("Modified SA-DSR Optimal Route: ");
            foreach (MobileNode node in optRoute2.GetNodeRoute())
            {
                Console.Write("{0} ", node.GetNodeID());
            }
            Console.WriteLine();
            Console.WriteLine("==============================");

            sTest.GetNodes()[0].DSRSendMessage(sTest.GetMessages()[0], packets[0]);

            Console.ReadKey();

            SimulationEnvironment sim = new SimulationEnvironment();

            sim.GenerateRandomNodes(15);
            sim.GenerateRandomMessages(50);

            Console.WriteLine("==============================================");
            Console.WriteLine("Simulation Nodes");
            Console.WriteLine("==============================================");

            foreach (MobileNode node in sim.GetNodes())
            {
                node.Print();
                foreach (MobileNode n in sim.GetNodes())
                {
                    if (!node.Equals(n))
                    {
                        if (node.IsWithinRangeOf(n))
                        {
                            Console.WriteLine("Node {0} is within range. Distance: {1}", n.GetNodeID(), node.GetDistance(n));
                        }
                        else
                        {
                            Console.WriteLine("Node {0} is not within range. Distance: {1}", n.GetNodeID(), node.GetDistance(n));
                        }
                    }
                }
                Console.WriteLine();
            }
            Console.WriteLine();
            Console.WriteLine("==============================================");
            Console.WriteLine("Simulation Messages");
            Console.WriteLine("==============================================");
            foreach (Message message in sim.GetMessages())
            {
                message.Print();
            }
            foreach (MobileNode node in sTest.GetNodes())
            {
                node.printKnownRoutes();
            }
            // Export data here
            DataExporter d = new DataExporter();

            d.export(sTest);
            Console.ReadKey();
        }