Alkalmak‎ > ‎2016-17-es tanév‎ > ‎

10. alkalom

Feladat

Egy számsorozat  átjuttatása egy nyilvános közegen úgy, hogy a másik csapat ne tudjon rájönni, hogy mi volt a számsorozat.

Használat

  • Kell egy kódoló és egy dekódoló program.
  • A kódoló program beolvas néhány egész számot 1 és 100 között a standard bemenetről (a beolvasás formátumát ti választhatjátok meg, mert nektek kell majd használni), és azt elküldi a szervernek, ami megjeleníti az üzenetet a kijelzőn, és továbbítja a csapattársatok dekódoló programjának. A dekódoló program feladat értelemszerűen a számok helyreállítása.
  • Fontos, hogy a másik csapat ne jöjjön rá, hogy mi volt az üzenet, ezért trükkös kódolást találjatok ki! Gondoljátok át, hogy milyen számsorozattal lehetne "kiszúrni" a programotokkal, tehát melyik bemenetből könnyű rájönni a programotok működésére.
  • Mindkét programhoz láthattok mintát lejjebb.
  • Fontos, hogy a dekódoló programnak futnia kell már akkor, amikor a kódoló program elindul!

Minta

Kódolás

A standard inputról addig olvassa a számokat, amíg el nem ér a bemenet végét jelző -1-hez. Úgy titkosítja a számokat, hogy mindegyikhez hozzáad 2-t. Amikor a legutolsó titkosított számot is elküldte, küld egy -1-est, hogy jelezze a dekódoló programnak, hogy elérkezett az üzenet vége. Fontos, hogy az ip címet átírjátok a megfelelő értékre, és a csapatnevet is kicseréljétek a sajátotokra. Továbbá le kell töltenetek a CommClient.java-t a projektetek src mappájába, mert ez a forrásfájl biztosítja a kommunikációt köztetek és a szerver között.

import java.util.Scanner;

public class Kodolo {

    public static void main(String[] args) {
        CommClient.connect("127.0.0.1", 8080, "Csapat");
        
        Scanner sc = new Scanner(System.in);
        int n;
        while((n = sc.nextInt()) != -1) {
            CommClient.sendInt(n + 2);
        }
        CommClient.sendInt(-1);
        
        CommClient.disconnect();
    }
    
}

Dekódolás

A dekódolás úgy történik, hogy a kódolt számból kivonunk 2-t, és így megkapjuk az eredeti számot, ezt megjelenítjük a standard kimeneten. Itt is fontos, hogy az ip címet és a csapatnevet megváltoztassátok! És ugyanúgy szükségetek van a CommClient.java fájlra, amit az src mappába kell elhelyezni.

import java.util.Scanner;

public class Dekodolo {

    public static void main(String[] args) {
        CommClient.connect("127.0.0.1", 8080, "Csapat");
        
        Scanner sc = new Scanner(System.in);
        int kodolt;
        while((kodolt = CommClient.readInt()) != -1) {
            System.out.println((kodolt - 2) + " ");
        }
        System.out.println();
        
        CommClient.disconnect();
    }
}
ċ
CommClient.java
(1k)
Bence Hornák,
2016. dec. 16. 4:04
ċ
CommServer.jar
(15k)
Bence Hornák,
2016. dec. 16. 3:43