コード例 #1
0
    private static void Init(string[] args)
    {
        myPortNr      = int.Parse(args[0]);
        Console.Title = "NetChange " + myPortNr;
        new Server(myPortNr);
        routingTable.SetEntry(myPortNr, myPortNr, 0);                                         //Trivial case
        int maxTry = 15;

        for (int i = 1; i < args.Length; i++)
        {
            int neighPortNr = int.Parse(args[i]);
            EstablishConnection(neighPortNr, maxTry);
        }
        NetChange.Init();
    }
コード例 #2
0
 public static void DeleteConnect(int neighDisconnect, bool sendToNeigh = true)
 {
     if (!NetwProg.neighs.ContainsKey(neighDisconnect))
     {
         Console.WriteLine("Poort " + neighDisconnect + " is niet bekend");
         return;
     }
     if (sendToNeigh)
     {
         NetwProg.neighs[neighDisconnect].Write.WriteLine("Del " + NetwProg.myPortNr);
     }
     NetwProg.neighs.Remove(neighDisconnect);
     NetChange.neighRoutingTable.RemoveNeigh(neighDisconnect);
     NetChange.Disconnect(neighDisconnect);
     Console.WriteLine("Verbroken " + neighDisconnect);
 }
コード例 #3
0
    private static void EstablishConnection(int neighPortNr, int maxTry)
    {
        int tries = 0;

        while (!neighs.ContainsKey(neighPortNr) && tries < maxTry)
        {
            try
            {
                neighs.Add(neighPortNr, new Connection(neighPortNr));
            }
            catch
            {
                tries++;
            }
        }
        routingTable.SetEntry(neighPortNr, neighPortNr, 1);
        NetChange.DistanceChange(neighPortNr, myPortNr, 1);
    }
コード例 #4
0
    // LET OP: Nadat er verbinding is gelegd, kun je vergeten wie er client/server is (en dat kun je aan het Connection-object dus ook niet zien!)

    // This loop receives messages formatted according to protocol
    public void ReaderThread()
    {
        try
        {
            while (true)
            {
                string test = Read.ReadLine();
                Console.WriteLine("// " + test);
                string[] line = test.Split(new char[] { ' ' }, 3);
                switch (line[0])
                {
                case "Msg":
                    if (int.Parse(line[1]) == NetwProg.myPortNr)
                    {
                        Console.WriteLine(line[2]);
                    }
                    else
                    {
                        ProtocolFunctions.MessageService(line[1], line[2]);
                    }
                    break;

                case "Del":
                    ProtocolFunctions.DeleteConnect(int.Parse(line[1]), false);
                    break;

                case "mdist":
                    string[] lineEx   = line[2].Split(new char[] { ' ' }, 3);
                    int      fromPort = int.Parse(line[1]);
                    int      toPort   = int.Parse(lineEx[0]);
                    int      distance = int.Parse(lineEx[1]);
                    Console.WriteLine("// mdist fromPort: " + fromPort + " toPort: " + toPort + " distance: " + distance);
                    NetChange.DistanceChange(fromPort, toPort, distance);
                    break;
                }
            }
        }
        catch { } // Connection apperently has been closed
    }