Mitrezzz

АПС Лаб 6 Статичко рутирање

Dec 27th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.81 KB | None | 0 0
  1. Статичко рутирање Problem 2 (2 / 5)
  2. Потребно е да се симулира рутирање преку хеш табела. Секој рутер претставува една кофичка од хеш табелата и притоа пакетите на влез ги прима преку еден интерфејс. Бидејќи рутерот, рутирањето на даден пакет го врши користејќи ги статичките рути што тој ги знае, кога ќе добие пакет преку влезниот интерфејс, тој треба да даде одговор дали може да го рутира пакетот до дадениот уред во таа мрежа (postoi или nepostoi). Важно е тоа што сите адреси имаат мрежна маска /24, што значи дека последните 8 бита се наменети за адресирање. Претпоставуваме дека сите адреси се зафатени во таа мрежа, така што до било кој уред од таа мрежа, доколку ја има во рутирачката табела, може да се достави пакетот. Така што доколку во рутирачката табела има 10.10.10.0, тоа значи дека рутерот може да го проследи пакетот до сите уреди во таа мрежа (10.10.10.1- 10.10.10.254).
  3.  
  4. На влез најпрвин се внесува бројот на рутери, потоа најизменично IP адресата на влезниот интерфејс, па во следниот ред IP адресите на мрежите до кој рутерот има статички рути. Потоа се внесува бројот на обиди за рутирање на пакети. Во следните редови најизменично се внесува влезен интерфејс и IP адреса на уред за која треба да се даде одговор дали тој рутер ја познава или не. Име на класта :RoutingHashJava
  5.  
  6.  
  7. import java.util.Hashtable;
  8. import java.util.Scanner;
  9.  
  10. public class RoutingHashJava {
  11.  
  12.     public static void main(String[] args) {
  13.        
  14.         Scanner scan = new Scanner(System.in);
  15.        
  16.         int n = scan.nextInt();
  17.         scan.nextLine();
  18.        
  19.         Hashtable<String, RouterNetworks> ipTable = new Hashtable<>();
  20.        
  21.         for (int i=0; i<n; ++i) {
  22.             String router = scan.nextLine();
  23.             String network = scan.nextLine();
  24.             RouterNetworks networks = new RouterNetworks(network);
  25.             ipTable.put(router, networks);
  26.         }
  27.        
  28.         int m = scan.nextInt();
  29.         scan.nextLine();
  30.        
  31.         for (int i=0; i<m; ++i) {
  32.             String router = scan.nextLine();
  33.             String network = scan.nextLine();
  34.            
  35.             if (ipTable.containsKey(router)) {
  36.                 if (ipTable.get(router).has(network))
  37.                     System.out.println("postoi");
  38.                 else
  39.                     System.out.println("ne postoi");
  40.             }
  41.             else
  42.                 System.out.println("ne postoi");
  43.         }
  44.         scan.close();
  45.     }
  46. }
  47.  
  48. class RouterNetworks {
  49.    
  50.     String [] networks;
  51.    
  52.     public RouterNetworks(String network) {
  53.         String []parts = network.split(",");
  54.         networks = new String[parts.length];
  55.         for (int i=0; i < parts.length; ++i){
  56.             networks[i] = parts[i];
  57.         }
  58.     }
  59.    
  60.     public boolean has(String obj) {
  61.         String n[] = obj.split("\\.");
  62.         for (int i=0; i<networks.length; ++i) {
  63.             String r[] = networks[i].split("\\.");
  64.             if (n[0].equals(r[0])&&n[1].equals(r[1]) && n[2].equals(r[2]))
  65.                 return true;
  66.         }
  67.         return false;
  68.     }
  69.    
  70. }
  71.  
  72. Sample input
  73. 2
  74. 23.3.3.3
  75. 10.10.10.0
  76. 192.168.1.1
  77. 20.2.2.0
  78. 2
  79. 192.168.1.1
  80. 20.2.2.1
  81. 13.13.3.3
  82. 192.2.2.2
  83. Sample output
  84. postoi
  85. ne postoi
Add Comment
Please, Sign In to add comment