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); } }
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); }
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); }
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(); }