Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Java. Клиент-серверное приложение. Многопоточное.
Highest Rated
Rating: 4.4 out of 5(38 ratings)
213 students

Java. Клиент-серверное приложение. Многопоточное.

Java, Socket, Server Socket, Intellij Idea, HTTP, Telnet, TCP/IP, Threads
Last updated 12/2018
Russian

What you'll learn

  • Использование сокетов для связи двух приложений по TCP/IP
  • Создание универсального модуля для связи двух программ
  • Создание простого web-сервера-автоответчика
  • Создание многопоточной программы
  • Синхронизация потоков

Course content

2 sections17 lectures3h 22m total length
  • Немного теории9:09

    Рекомендую ознакомиться со статьёй, приведенной в ссылке ниже

    Самостоятельное задание: 

    1. Прослушать видео.

    2. Написать ответы на вопросы.

    • Что такое клиент-серверное приложение?

    • Что такое серверный сокет?

    • Что такое (клиентский) сокет?

    • Зачем нужны IP, порт, сокет и чем они отличаются?

    3. Найти картинку на тему сокетов и прикрепить к отчёту.

  • Простейший сервер7:19

    На этом уроке мы создадим простейший сервер, который будет принимать подключения от клиентов и проверим его работу из  телнета и браузера.

    Самостоятельное задание: 

    1. Написать, какую среду разработки вы будете использовать.

    2. Создать проект ClientServerJava.

    3. Подключить необходимые для работы с сетью и вводом выводом библиотеки.

    4. Создать Socket.

    5. Запустить и протестировать работу созданного сервера через браузер и/или telnet.

    6. Прислать результат работы программы.

  • Автоответчик10:26

    На этом уроке мы напишем сервер-автоответчик, который всем клиентам будет отправлять одно и тоже сообщение.

    Самостоятельное задание: 

    1. Создать на серверной части нашего приложения клиентский сокет (clientSocket).

    2. Проверить работу сервера в режиме telnet клиент и в браузерном варианте.

      • * Браузер может не отображать текст, так как он не соответствует HTTP.

      • * Попробуйте другой браузер или сформулируйте корректный HTTP-запрос.

    3. Реализовать функционал вывода целых строк.

    4. Зациклить работу нашего одноразового сервера.

    5. Реализовать отображение количества созданных сессий.

  • Правильный заголовок6:53

    На этом дополнительном уроке мы сформируем правильный HTTP-ответ, который будет выдавать наш сервер, чтобы даже привередливые браузеры смогли бы его отобразить.

    Самостоятельное задание: 

    1. Сформировать правильный заголовок и тело HTTP-response.

    2. Проверить работу нашего сервачка в разных браузерах.

    3. * Почитать больше об HTTP заголовках и написать, что вы узнали.

  • Как хорошо уметь читать!10:19

    На этом слайде мы создадим клиента, который сможет подключиться к серверу и получить от него сообщение.

    Самостоятельное задание:

    1. Создать новый класс Client.

    2. Создать клиентский сокет clientSocket. Прописать host и port.

    3. Запустить сервер и приложение убедится что все работает.

    4. Дописать код побайтового считывания данных с сервера в массив и проверить работу приложения в этом режиме.

    5. Создать reader для считывания по строчкам.

    6. Доработать серверную часть в части вывода сообщений и проверить работу в браузере.

  • Клиент-серверный диалог14:13

    На этом уроке мы обеспечим полноценное общение между клиентом и сервером через сокет.

    Самостоятельное задание:

    1. Продублировать функционал передачи сообщений с сервера в клиента.

    2. Аналогично сделать чтение и отправку сообщений на серверной стороне.

    3. Исправить все ошибки и протестировать одновременную работу двух приложений.

    4. * Зачем нужен "\n" при передаче сообщений?

    5. * Почему в клиенте и браузере разный ответ по длине строки?

  • Экспериментальный сервачок12:24

    На этом уроке мы ещё раз построчно и подробно разберём написанные программы и поэкспериментируем с "медленным" сервером.

      Самостоятельное задание:

    1. Пройтись по написанному коду как клиента так и сервера и тщательно его проанализировать.

    2. Сделать задержку ответов со стороны сервера через Thread.sleep().

    3. Запустить клиента и сервер в командной строке и посмотреть с какой задержкой сервер обрабатывает сообщения клиента.

    4. Выполнить домашнее задание - самостоятельно написать клиент-серверную игру "Угадай число".

  • Техническое задание6:24

    Мы познакомились с принципом работы сокетов.

    Теперь самое время создать какую-нибудь простую клиент-серверную программку.

    На этом уроке мы сформулируем техническое задание.

    Попробуйте написать программу самостоятельно.

    Самостоятельное задание:

    1. Изучить техническое задание (ТЗ) по реализации единого клиент-серверного приложения калькулятор с параметрами командной строки.

    2. * Попытаться самостоятельно написать универсальный класс для работы программы с двумя конструкторами под клиента и сервера согласно ТЗ.

  • Основной алгоритм13:04

    На этом уроке мы напишем два алгоритма в одной программе: для сервера и для клиента.

    Самостоятельное задание:

    1. Создать новый проект с именем Socketor.

    2. В функции main() реализовать элементарную проверку входных параметров.

    3. Создать экземпляр объекта Socketor.

    4. Реализовать проверку, какая программа была запущена: server или client.

    5. В зависимости от этого запустить соответствующий метод run...

    6. Реализовать методы runServer(...) и runClient(...) с учетом необходимых параметров.

    7. Реализовать функцию int calculate(String operation, String a, String b).

    8. * Реализовать класс Phone.

    9. Сделать скриншот о проделанной работе.

  • Скелет телефона3:36

    В этом коротком уроке мы создадим метод calculate() и очень быстро набросаем скелет класса Phone, используя возможности кодогенерации Intellij Idea.

      Самостоятельное задание:

    1. Реализовать метод int calculate(String operation, String a, String b).

    2. В среде разработки Intellij IDEA с помощью сочетания клавиш Alt+Enter освоить способ создания заглушек методов.

    3. Создать заглушки к методам:
      void accepted(),
      String readLine(),
      writeLine(String message),
      void close().

    4. Создать заглушки к конструкторам для сервера и клиента: 
      Phone(String port)
      Phone(String ip, String port)

    5. Откомпилировать программу и запустить её.

    6. Отобразить на скриншоте Скелет телефона и результат работы программы.

    7. * Реализовать созданные методы и конструкторы.

  • Универсальный сокет15:26

    На этом уроке мы создадим все методы универсального сокета в классе Phone.

    Самостоятельное задание:

    1. Описать клиент серверные переменные в классе и переменные ввода вывода

    2. Написать метод Phone для сервера

    3. Написать метод Phone для клиента

    4. Написать метод Accept()

    5. Создать вспомогательный метод createStreams().

    6. Написать reader и writer для него

    7. Добавить метод в конструктор клиента и accept сервера

    8. Дописать метод readLine()

    9. Дописать метод writeLine()

    10. Реализовать метод close()

    11. Запустить Server с параметрами в IDEA

    12. Запустить клиента из командной строки

    13. Исправить ошибки проверить работу программы

    14. Протестируйте программу в разных режимах.

    15. Придумайте, какую ещё клиент-серверную программу можно написать.


Requirements

  • Базовые знания Java
  • Умение работать в Intellij Idea

Description

Вы узнаете, как можно установить полноценный диалог между двумя программами, которые могут быть размещены и запущены на разных, даже весьма удалённых, компьютерах. 

В начале реализуется простейший вариант диалога с двумя разными программами: сервер и клиент.

Базируясь на принципиальных различиях в структурах сервера и клиента, а также наличия в них общего кода, создаётся "универсальный сокет" в виде отдельного класса Phone, который может работать и как сервер, и как клиент.

Разработка программы ведётся в среде Intellij Idea, с помощью которой будут показаны некоторые эффективные приемы кодогенерации. 

Во второй части курса мы поговорим о многопоточности, когда она нужна, а когда от неё нет пользы.

Будут рассмотрены основные принципы создания многопоточного приложения, причины возникновения коллизий и способы их разрешения.

После небольшой теоретической подготовки мы добавим многопоточность в созданный сервер написанной программы. И сделаем это двумя разными способами.

В конце курса рассмотрено два способа создания многопоточного сервера.

Who this course is for:

  • программисты
  • инженеры
  • студенты