atanasovetr

Packet

Feb 7th, 2021
721
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.99 KB | None | 0 0
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3.  
  4. public class Packet {
  5.     private String msg;
  6.     private int number;
  7.     private double integrity;
  8.     private String destinationAddress;
  9.  
  10.     public Packet(String msg, int number, double integrity, String destinationAddress) {
  11.         this.setMessage(msg);
  12.         this.setNumber(number);
  13.         this.setIntegrity(integrity);
  14.         this.setDestinationAddress(destinationAddress);
  15.     }
  16.  
  17.     private double calcIntegrity(double integrity){
  18.         String[] msgSymbols = this.msg.split("");
  19.         for (String symbol: msgSymbols){
  20.             if(symbol.equals("-")){
  21.                 integrity -= 0.01;
  22.             }
  23.         }
  24.         return integrity;
  25.     }
  26.     void setIntegrity(double integrity) {
  27.         integrity = calcIntegrity(integrity);
  28.         if (integrity < 0) {
  29.             this.integrity = 0;
  30.         } else if (integrity > 1) {
  31.             this.integrity = 1;
  32.         } else {
  33.             this.integrity = integrity;
  34.         }
  35.     }
  36.  
  37.  
  38.     private void setNumber(int number) {
  39.         this.number = Math.abs(number);
  40.     }
  41.  
  42.     private void setMessage(String msg) {
  43.         this.msg = msg;
  44.     }
  45.  
  46.     public int getNumber() {
  47.         return this.number;
  48.     }
  49.  
  50.     public double getIntegrity() {
  51.         return this.integrity;
  52.     }
  53.  
  54.     public String getDestinationAddress() {
  55.         return destinationAddress;
  56.     }
  57.  
  58.     private boolean checkIP(String destinationAddress){
  59.         String zeroTo255
  60.                 = "(\\d{1,2}|(0|1)\\"
  61.                 + "d{2}|2[0-4]\\d|25[0-5])";
  62.         String regex
  63.                 = zeroTo255 + "\\."
  64.                 + zeroTo255 + "\\."
  65.                 + zeroTo255 + "\\."
  66.                 + zeroTo255;
  67.         Pattern p = Pattern.compile(regex);
  68.  
  69.         if (destinationAddress == null){
  70.             return false;
  71.         }
  72.         Matcher m = p.matcher(destinationAddress);
  73.         return m.matches();
  74.     }
  75.  
  76.     public void setDestinationAddress(String destinationAddress) {
  77.         if(checkIP(destinationAddress)){
  78.             this.destinationAddress = destinationAddress;
  79.         }
  80.         else{
  81.             this.destinationAddress = "0.0.0.0";
  82.         }
  83.     }
  84.  
  85.     @Override
  86.     public String toString() {
  87.         if (this.integrity < 0.5) {
  88.             return "corrupted message";
  89.         }
  90.         return this.msg;
  91.     }
  92. }
  93.  
  94. //--------------------------------------------------------------
  95.  
  96. import java.util.ArrayList;
  97. import java.util.Scanner;
  98.  
  99. public class PacketMain {
  100.     static void bubbleSort(ArrayList<Packet> al) {
  101.         int n = al.size();
  102.         for (int i = 0; i < n-1; i++) {
  103.             for (int j = 0; j < n-i-1; j++) {
  104.                 if (al.get(j).getNumber() > al.get(j + 1).getNumber()){
  105.                     // swap arr[j+1] and arr[j]
  106.                     Packet temp = al.get(j);
  107.                     al.set(j, al.get(j + 1));
  108.                     al.set(j + 1, temp);
  109.                 }
  110.             }
  111.         }
  112.     }
  113.     static void selectionSort(ArrayList<Packet> al) {
  114.         int n = al.size();
  115.         // One by one move boundary of unsorted subarray
  116.         for (int i = 0; i < n; i++) {
  117.             // Find the minimum element in unsorted array
  118.             int min_idx = i;
  119.             for (int j = i + 1; j < n; j++){
  120.                 if (al.get(j).getNumber() < al.get(min_idx).getNumber()){
  121.                     min_idx = j;
  122.                     // Swap the found minimum element with the first
  123.                     // element
  124.                     Packet temp = al.get(min_idx);
  125.                     al.set(min_idx, al.get(i));
  126.                     al.set(i, temp);
  127.                 }
  128.             }
  129.         }
  130.     }
  131.  
  132.     public static void main(String[] args) {
  133.         Scanner scan = new Scanner(System.in);
  134.         ArrayList<Packet> packets = new ArrayList<Packet>();
  135.  
  136.         System.out.print("Enter your IP address: ");
  137.         String clientAddress = scan.nextLine();
  138.  
  139.         System.out.print("Enter packets count: ");
  140.         int n = Integer.parseInt(scan.nextLine());
  141.  
  142.         for (int i = 0; i < n; i++) {
  143.             // read info, create object, add packets
  144.             System.out.print("Read message: ");
  145.             String msg = scan.nextLine();
  146.             System.out.print("Read packet number: ");
  147.             int num = Integer.parseInt(scan.nextLine());
  148.             System.out.print("Read packet integrity: ");
  149.             double integrity = Double.parseDouble(scan.nextLine());
  150.             System.out.print("Read destination IP address: ");
  151.             String destIP = scan.nextLine();
  152.  
  153.             packets.add(new Packet(msg, num, integrity, destIP));
  154.         }
  155.  
  156.         selectionSort(packets);
  157.  
  158.         System.out.println("Message: ");
  159.         for (Packet p : packets) {
  160.             if (clientAddress.equals(p.getDestinationAddress())) {
  161.                 if (p.getIntegrity() >= 0.5) {
  162.                     System.out.print(p);
  163.                 }
  164.             }
  165.         }
  166.     }
  167. }
Advertisement
Add Comment
Please, Sign In to add comment