portal Michała Hanćkowiaka
Begin main content
import java.net.*;
import java.io.*;

public class Klient {  //Client
    private Socket s;
    private InetAddress adresSerwera; //serverAddress
    private int portSerwera; //serverPort
    private ZLiczbaLosowa zadanie1; //ZRandomNumber
    private ZSortuj zadanie2; //ZSort
    private int[] tablica; //array
    private ObjectInputStream ois;
    private ObjectOutputStream oos;

    public Klient(InetAddress sa, int p) {
        super();
        adresSerwera = sa;
        portSerwera = p;
        tablica = new int[5];
        for (int i = 0; i < 5; i++) {
            tablica[i] = 5-i;
        }
        zadanie1 = new ZLiczbaLosowa();
        zadanie2 = new ZSortuj();
    }

    public void OtworzPolaczenie() { //open connection
        try {
            System.out.println("Nawiazuje polaczenie (connecting)...");
            s = new Socket(adresSerwera, portSerwera);
            oos = new ObjectOutputStream(s.getOutputStream());
            ois = new ObjectInputStream(s.getInputStream());
            System.out.println("Polaczenie nawiazane (connection established).");
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }

    public void ZamknijPolaczenie() { //CloseConnection
        try {
            System.out.println("Zamykam polaczenie (closing connection)...");
            oos.close();
            ois.close();
            s.close();
            System.out.println("Polaczenie zamkniete (connection closed).");
        } catch(Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }

    public Object WykonajZadanieNaSerwerze( //ExecuteTaskOnServer
        Zadanie z, Object par
        ) {
        Object wynik = null;
        try {
            oos.writeObject(z);
            oos.writeObject(par);
            wynik = ois.readObject();
        } catch(Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
        return wynik; //result
    }

    public void Menu() {
        while (true) {
            System.out.println();
            System.out.println();
            System.out.println(
            "1. Wykonaj na serwerze zadanie 1 (liczba losowa) (execute task - random number)");
            System.out.println(
            "2. Wykonaj na serwerze zadanie 2 (sortowanie) (execute task - sort)");
            System.out.println(
            "3. Koniec (end)");
            try {
                BufferedReader klawiatura = new BufferedReader( /*keyboard */
                    new InputStreamReader(
                        System.in
                        )
                    );
                System.out.print("Wybor (choice): ");
                int opcja = Integer.parseInt(
                    klawiatura.readLine());
                if (opcja == 3) System.exit(0);
                if (opcja == 1 || opcja == 2) {
                    OtworzPolaczenie();
                    if (opcja == 1) {
                        Double wynik = (Double)
                            WykonajZadanieNaSerwerze(
                                zadanie1,
                                new Double(0.0)
                            );
                        System.out.println(
                        "Wynik zadania (result of task) 1: "+wynik.doubleValue());
                    } else {
                        int[] wynik = (int[])
                            WykonajZadanieNaSerwerze(
                                zadanie2,
                                tablica
                            );
                        System.out.print("Wynik zadania (result of task) 2: [ ");
                        for (int i = 0; i < wynik.length; i++) {
                            System.out.print(wynik[i]+" ");
                        }
                        System.out.println("]");
                    }
                    ZamknijPolaczenie();
                }
            } catch (Exception e) {
                System.out.println("NIE POWIODLO SIE (failed)");
            }
        }
    }

    public static void main(String[] args) {
        String host;
        int port;
        try {
            BufferedReader klawiatura = new BufferedReader(
                new InputStreamReader(
                    System.in
                    )
                );
            System.out.print("Host serwera obliczen (address of th computation server): ");
            host = klawiatura.readLine();
            System.out.print("Numer portu serwera obliczen (port number of the server): ");
            port = Integer.parseInt(klawiatura.readLine());
            Klient k = new Klient(
                InetAddress.getByName(host),
                port
                );
            k.Menu();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
}

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...