Skip to content

AshHydra/Telnet_client

Repository files navigation

Úkol 2 - Telnet Klient

UTB FAI Task Java Gradle

Maximální počet bodů 4 bodů
Způsob komunikace s aplikací Parametry předané při spuštění + standardní vstup
Způsob testování aplikace Na základě odesílaných zpráv po síti + standardní výstup

📝 Zadání úkolu

Implementujte telnet klienta, který vytvoří soket pro komunikaci s jiným telnet klientem na specifikované IP adrese a portu. Následně na tento soket bude posílat vše, co uživatel napíše na standartní vstup System.in. Na standartní výstup System.out bude vypisovat vše, co odpoví komunikující protistrana. Tento text vypisujte v nepozměněné formě.

Požadavky:

  • Program bude přijímat IP adresu a port jako parametry při spouštění aplikace.
  • Zamezte blokování při operaci InputStream.read() pomocí volání InputStream.available(). Snižte zátěž CPU ve smyčce aktivního čekání pomocí volání Thread.sleep(20).
  • Implementujte příjem a odesílání znaků ze Soketu v nezávislých vláknech.
  • Zpráva bude odeslána ve chvíli, kdy uživatel zmáčkne na klávesnici ENTER
  • Pokud uživatel napíše "/QUIT" a zmáčkne ENTER, aplikace ukončí spojení a ukončí se.

💡 Typ

Aplikaci telnet klienta můžete vyzkoušet například s využitím nástroje netcat, kdy následujícím příkazem na localhostu spustíte server, ke kterému se váš klient připojí. nc -lv 127.0.0.1 4444

package main.java.utb.fai;

import java.io.*;
import java.net.*;

public class TelnetClient {

    private String serverIp;
    private int port;

    public TelnetClient(String serverIp, int port) {
        this.serverIp = serverIp;
        this.port = port;
    }

    public void run() {
        try {
            Socket socket = new Socket(serverIp, port);
            // Implementation of receiving and sending data
            // Implement processing of input from the user and sending data to the server
            // Implement response processing from the server and output to the console
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

V hlavní třídě main implementujte zpracování vstupních parametrů, které jsou aplikaci předávány při spuštění.

Struktura pole vstupních parametrů

  1. args[0] - IP adresa klienta, se kterým bude naše aplikace komunikovat (String)
  2. args[1] - Číslo portu, na kterém bude aplikace komunikovat. Standardně 23 pro telnet. (int)
package main.java.utb.fai;

public class App {

    public static void main(String[] args) {
        // TODO: Implement input parameter processing

        TelnetClient telnetClient = new TelnetClient("127.0.0.1", 23);
        telnetClient.run(); // run telnet client
    }
}

Poznámka: Implementace a struktura kódu aplikace je libovolná a je zcela na vás, jak tento problém vyřešíte. Je však důležité, aby aplikace splňovala zadané požadavky.


🏆 Způsob hodnocení

Vaše implementace bude hodnocena na základě chování aplikace při testování různých scénářů. Automatizovaný testovací nástroj bude předávat vaší aplikaci různé parametry, včetně platných a neplatných, aby otestoval její chování za různých podmínek. V případě testování síťové komunikace mezi více klienty, testovací nástroj bude vytvářet virtuální klienty/servery za účelem ověření funkcionality.

Výsledné hodnocení bude záviset na celkovém počtu úspěšných testovacích případů. Počet bodů získaných z úlohy bude tedy záviset na celkové úspěšnosti při testování. Váš výsledný počet bodů bude určen následujícím vzorcem.

VP = MB * (UT / CPT)

Popis symbolů:

  • VP: Výsledný počet bodů.
  • MB: Maximální počet bodů pro danou úlohu.
  • UT: Počet úspěšných testovacích případů.
  • CPT: Celkový počet testovacích případů.

⚙️ Jak spustit automatizované hodnocení lokálně na svém počítači?

Automatizované hodnocení můžete spustit lokálně za účelem ověření funkčnosti vaší aplikace. K tomu slouží předpřipravený skript, který je dostupný v repozitáři tohoto úkolu. Výsledný report testování se bude nacházet v souboru test_report.html.

Pro uživatele systému Linux:

Spusťte skript s názvem run_local_test.sh.

Pro uživatele systému Windows:

Spusťte skript s názvem run_local_test.bat.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published