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); } } }