Пример #1
0
        static void Main(string[] args)
        {
            //Choix de l'algo
              int choiceAlgorithm;
              bool parsed;

              do
              {
            Console.WriteLine("Quel algorithme souhaitez-vous utiliser?\n1) LS\n2) DV");
            parsed = Int32.TryParse(Console.ReadLine(), out choiceAlgorithm);
              } while (!parsed || (choiceAlgorithm != 1 && choiceAlgorithm != 2));

              if (choiceAlgorithm == 1)
              {
            Router.RouterMode = ModeEnum.LS;
              }

              else
              {
            Router.RouterMode = ModeEnum.DV;
              }

              Router RouterA = new Router("RouterA", 50001);
              Router RouterB = new Router("RouterB", 50002);
              Router RouterC = new Router("RouterC", 50003);
              Router RouterD = new Router("RouterD", 50004);
              Router RouterE = new Router("RouterE", 50005);
              Router RouterF = new Router("RouterF", 50006);

              Link linkAB = new Link(RouterA, RouterB, 5);
              Link linkAD = new Link(RouterA, RouterD, 45);
              Link linkBC = new Link(RouterB, RouterC, 70);
              Link linkBE = new Link(RouterB, RouterE, 3);
              Link linkDC = new Link(RouterD, RouterC, 50);
              Link linkDE = new Link(RouterD, RouterE, 8);
              Link linkCF = new Link(RouterC, RouterF, 78);
              Link linkEF = new Link(RouterE, RouterF, 7);

              RouterA.NeighboursLink = new List<Link>() { linkAB, linkAD };
              RouterB.NeighboursLink = new List<Link>() { linkAB, linkBE, linkBC };
              RouterC.NeighboursLink = new List<Link>() { linkBC, linkDC, linkCF };
              RouterD.NeighboursLink = new List<Link>() { linkAD, linkDC, linkDE };
              RouterE.NeighboursLink = new List<Link>() { linkDE, linkBE, linkEF };
              RouterF.NeighboursLink = new List<Link>() { linkCF, linkEF };

              Thread ThreadRouterA = new Thread(RouterA.StartListening);
              Thread ThreadRouterB = new Thread(RouterB.StartListening);
              Thread ThreadRouterC = new Thread(RouterC.StartListening);
              Thread ThreadRouterD = new Thread(RouterD.StartListening);
              Thread ThreadRouterE = new Thread(RouterE.StartListening);
              Thread ThreadRouterF = new Thread(RouterF.StartListening);

              ThreadRouterA.Start();
              ThreadRouterB.Start();
              ThreadRouterC.Start();
              ThreadRouterD.Start();
              ThreadRouterE.Start();
              ThreadRouterF.Start();

              RouterA.UpdateNeighborhood();
              RouterB.UpdateNeighborhood();
              RouterC.UpdateNeighborhood();
              RouterD.UpdateNeighborhood();
              RouterE.UpdateNeighborhood();
              RouterF.UpdateNeighborhood();

              Console.ReadLine();
        }
Пример #2
0
        /// <summary>
        /// Permet d'envoyer le graph à un router specifique
        /// </summary>
        /// <param name="router"></param>
        private void SendGraphTo(Router destRouter, Link link)
        {
            //TODO
              //Dans la réception du graph il faut comparer les graph et si ils sont identiques
              //on met le graph.isupdated a true, sinon à false
              //Lorsque tous les graphs seront updated, ça veut dire que tous les routers ont le mm graph
              string str = "Poke";
              try
              {
            //var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //socket.Connect(destRouter.Gateway, destRouter.GetPort(link));
            //socket.Send(Encoding.UTF8.GetBytes(str), 0, str.Length, SocketFlags.None);

            TcpClient client = new TcpClient(destRouter.Gateway.ToString(), destRouter.portNumber);
            // Translate the passed message into ASCII and store it as a Byte array.
            Byte[] data = System.Text.Encoding.ASCII.GetBytes(str);

            // Get a client stream for reading and writing.
            //  Stream stream = client.GetStream();

            NetworkStream stream = client.GetStream();

            // Send the message to the connected TcpServer.
            stream.Write(data, 0, data.Length);

            Console.WriteLine("Sent: {0}", str);

            // Receive the TcpServer.response.

            // Buffer to store the response bytes.
            data = new Byte[256];

            // String to store the response ASCII representation.
            String responseData = String.Empty;

            // Read the first batch of the TcpServer response bytes.
            Int32 bytes = stream.Read(data, 0, data.Length);
            responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
            Console.WriteLine("Received: {0}", responseData);

            // Close everything.
            stream.Close();
            client.Close();
              }
              catch (Exception ex)
              {
            Console.WriteLine(ex.Message);
              }
        }