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