Guest User

Untitled

a guest
Apr 15th, 2019
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.29 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class MTU{
  4.  
  5.     /**
  6.      * @realArcherL
  7.      * MTU (Maximum Transmission Unit) 32-(router memory) Bytes
  8.      * IP Header size 20-60 Bytes
  9.      * Shows output of Total Size of the packet, Size of Data, More Fragments & Fragment Offset.
  10.      * */
  11.  
  12.     static final int mtu =600;
  13.     static final int headerSize = 20;
  14.  
  15.     static int[] packets;
  16.     static int[] totalSize;
  17.     static int[] offset;
  18.     static boolean[] fragments;
  19.  
  20.     public int numberOfPackets(int data){
  21.         return (int)Math.ceil((float)data/mtu);
  22.     }
  23.  
  24.     public void printPackets(int[] array){
  25.         for (int i=0; i<array.length; i++){
  26.             System.out.print(array[i]+ "|" + headerSize + " ");
  27.         }
  28.     }
  29.  
  30.     public void printMoreFragments(boolean[] array){
  31.         for (int i=0; i<array.length; i++){
  32.             System.out.print(array[i]+ " ");
  33.         }
  34.     }
  35.  
  36.     public void packetDivision(int data){
  37.  
  38.         packets = new int[numberOfPackets(data)];
  39.         totalSize = new int[numberOfPackets(data)];
  40.         offset = new int[numberOfPackets(data)];
  41.  
  42.         for(int i=0; i<packets.length; i++) {
  43.             if (data <= mtu)
  44.                 packets[i] = data;
  45.             else
  46.                 packets[i] = mtu;
  47.             data = data - mtu;
  48.         }
  49.  
  50.         for(int i=0; i<totalSize.length; i++){
  51.             totalSize[i] = packets[i]+ headerSize;
  52.         }
  53.  
  54.         offset[0] = 0;
  55.         for (int i=1; i<offset.length; i++){
  56.             offset[i] = offset[i-1] +packets[i-1];
  57.         }
  58.  
  59.     }
  60.  
  61.     public void moreFragments(int data){
  62.  
  63.         fragments = new boolean[numberOfPackets(data)];
  64.  
  65.         for(int i=0; i<packets.length; i++){
  66.             fragments[i] = true;
  67.  
  68.             if (packets[i] < mtu){
  69.                 fragments[i] = false;
  70.             }
  71.         }
  72.     }
  73.  
  74.     public static void main(String[] args){
  75.  
  76.         MTU mtu = new MTU();
  77.         Scanner sc = new Scanner(System.in);
  78.  
  79.         System.out.print("Enter the number of Bytes to be sent:  ");
  80.         int data = sc.nextInt();
  81.  
  82.         mtu.packetDivision(data);
  83.         System.out.print("Total Size : ");
  84.         mtu.printPackets(totalSize);
  85.  
  86.         System.out.println();
  87.  
  88.         System.out.print("Packets    : ");
  89.         mtu.printPackets(packets);
  90.  
  91.         System.out.println();
  92.  
  93.         System.out.print("Frag Offset: ");
  94.         mtu.printPackets(offset);
  95.  
  96.         System.out.println();
  97.  
  98.         mtu.moreFragments(data);
  99.         System.out.print("MoreFrag   : ");
  100.         mtu.printMoreFragments(fragments);
  101.  
  102.         System.out.println();
  103.  
  104.         int[] temppackets = packets;
  105.  
  106.         for (int i=0; i<packets.length; i++) {
  107.             mtu.packetDivision(temppackets[i]);
  108.             System.out.print("Total Size : ");
  109.             mtu.printPackets(totalSize);
  110.  
  111.             System.out.println();
  112.  
  113.             System.out.print("Packets    : ");
  114.             mtu.printPackets(packets);
  115.  
  116.             System.out.println();
  117.  
  118.             System.out.print("Frag Offset: ");
  119.             mtu.printPackets(offset);
  120.  
  121.             System.out.println();
  122.  
  123.             mtu.moreFragments(temppackets[i]);
  124.             System.out.print("MoreFrag   : ");
  125.             mtu.printMoreFragments(fragments);
  126.  
  127.             System.out.println();
  128.         }
  129.     }
  130. }
Add Comment
Please, Sign In to add comment