Написання додатку, який складається з двох частин: сервер та клієнт. Реалізація графічного або консольного інтерфейсу, страница 2

                StringTokenizer st = new StringTokenizer(fromClient);

                String toClient = String.valueOf(st.countTokens()); //рахуємо кількість слів

                System.out.println("Обработка...");

                String wait = in.readLine();

                 if (wait.equals("да")){

                        System.out.print("Нажмите Enter для отправки результатов клиенту!");

                        String tmp = stdIn.readLine();

                 }

                out.println(toClient);

                out.flush(); //очистка буферу.

                System.out.println("Результаты были отправлены клиенту!");

            }

        } catch(ArrayIndexOutOfBoundsException e){

                                    System.out.println("Вы запустили сервер с неправильными параметрами. При запуске укажите портСокета");

                        } catch(IOException e1){

            System.out.println("Ошибка при создании сокета или ошибка ввода/вывода");

        } finally {

            try{ //закриваємо сокет та всі потоки

                if (in != null)

                    in.close();

                if (out != null)

                    out.close();

                if (sc != null)

                    sc.close();

                if (ss != null)

                    ss.close();

                System.out.println("Сервер остановлен");

            }catch(IOException e2){

                System.out.println("Ошибка при закрытии потока или сокета");

            }

        }

    }

}   

Client.java

package ua.sumdu.chalyi.seti.odz;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.PrintWriter;

import java.io.InputStreamReader;

import java.net.Socket;

public class Client{

    public static void main(String args[]){

        PrintWriter out = null;

        BufferedReader in = null;

        BufferedReader stdIn = null;

        Socket sc = null;

        try {

            sc = new Socket(args[0],Integer.parseInt(args[1]));

            out = new PrintWriter(sc.getOutputStream());

            in = new BufferedReader(new InputStreamReader(sc.getInputStream()));

            stdIn = new BufferedReader(new InputStreamReader(System.in));

            String userInput;

            while (true) {

                System.out.println("Введите строку с несколькими словами или слово \"выход\" для завершения работы:");

                if ((userInput = stdIn.readLine()).trim().toLowerCase().equals("выход")){

                    break;

                }

                 String wait;

                  while(true){

                        System.out.println("Ждать сервером подтверждения отправления результатов? Введите да / нет:");

                        wait = stdIn.readLine();

                        wait = wait.toLowerCase().trim();

                        if (!wait.equals("да") && !wait.equals("нет")){

                                    System.out.println("Неверное сообщение. Попробуйте снова.");

                        }else{

                                    break;

                        }

                   }

                out.println(userInput);

                 out.println(wait);

                out.flush();

                System.out.println("Количество слов в строке  \"" + userInput + "\"  =  " + in.readLine());

            }

        } catch(ArrayIndexOutOfBoundsException e){

                                    System.out.println("Вы запустили клиент с неправильными параметрами. Укажите при запуске хостСерверногоСокета портСокета");

                        } catch(IOException e){

            System.out.println("Ошибка при создании сокета(возможно вы указали не верный хост или порт) или ошибка ввода/вывода");

        } finally {

            try{

                if (in != null)

                    in.close();

                if (out != null)

                    out.close();

                if (stdIn != null)

                    stdIn.close();

                if (sc != null)

                    sc.close();

            }catch(IOException e1){

                System.out.println("Ошибка при закрытии потока или сокета");

            }

        }

    }

}       

Скріншоти виконная програми

Висновок

Була розроблений додаток для обміну даними між клієнтом та сервером.

Обмін даними відбувається за допомогою сокетів. Під час написання цього додатку навчився створювати сокети, приймати та передавати інформацію, оброблювати цю інформацію та правильно закривати сокети.

Написана програма правильно зчитує дані, виконує обрахунки та передає дані.