Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Занятие 12. Реализация клиент-серверной модели на Java. кратко

Лекция



Привет, Вы узнаете о том , что такое клиент-сервер на java, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое клиент-сервер на java , настоятельно рекомендую прочитать все из категории ООП и практические JAVA.

Основы создания сетевых приложений на Java

План лекции

  • Протоколы транспортного уровня
  • Понятие сокета
  • Пакет java.net
  • Классы Socket и ServerSocket
  • Классы DatagramPacket и DatagramSocket
  • Класс URL2



Модель OSI

  • Прикладной уровень
  • Уровень представления
  • Сеансовый уровень
  • Транспортный уровень
  • Сетевой уровень
  • Уровень соединения
  • Физический уровень


Занятие 12. Реализация клиент-серверной модели на Java.

.
Transmission Control Protocol TCP – основанный на соединениях протокол, обеспечивающий надежную передачу данных между двумя компьютерами с сохранением порядка данных

Используется в: HTTP, FTP, Telnet и др.

Занятие 12. Реализация клиент-серверной модели на Java.

User Datagram Protocol UDP – не основанный на соединениях протокол, реализующий пересылку независимых пакетов данных, называемых дейтаграммами, от одного компьютера к другому без гарантии их доставки

Занятие 12. Реализация клиент-серверной модели на Java.

Модель «Клиент-сервер»

Порядок работы

  • Каждая из сторон виртуального соединения называется «сокет» (socket)
  • Процесс-сервер инициализируется при запуске и далее бездействует, ожидая поступления запроса от клиента
  • Процесс-клиент посылает запрос на установление соединения с сервером, требуя выполнить для него определенную функцию Виды приложений-серверов
  • Сервер последовательной обработки запросов
  • Сервер параллельной обработки запросов


Понятие порта Компьютер (обычно) имеет только одно физическое соединение с сетью Соединение описывается, например, IP- адресом (32 или 128 бит на нынешний момент) Как различать информацию для различных приложений? А.В.
Занятие 12. Реализация клиент-серверной модели на Java.

Сокет привязывается к порту

Порт описывается 16-битным числом

Порты 0-1023 зарезервированы

TCP orUDP portapp port # data Packet Data

Интерфейс сокетов

В 80-ых годах американское правительственное агентство по поддержке исследовательских проектов (ARPA), финансировало реализацию протоколов TCP/IP для UNIX в Калифорнийском университете в г.

Беркли Разработан интерфейс прикладного программирования для сетевых приложений TCP/IP (TCP/IP API)

TCP/IP sockets или Berkeley sockets

Занятие 12. Реализация клиент-серверной модели на Java.

Связь с файловой системой TCP/IP в рамках UNIX Интерфейс сокетов – через системные вызовы UNIX Системные вызовы ввода-вывода UNIX выглядят как последовательный цикл:

  • открыть
  • считать/записать
  • закрыть

Нет различий между файлами и внешними устройствами


Проблемы сетевого ввода/вывода

Модель клиент-сервер не соответствует системе ввода-вывода UNIX

  • Нет пассивных операций ввода-вывода
  • Не умеют устанавливать соединения
  • Используется фиксированный адрес файла
  • Соединение с файлом доступно на протяжении всего цикла запись-считывание Для не ориентированных на соединение протоколов фиксированный адрес – проблема: при передаче дейтаграммы адрес есть, а соединения нет


Абстракция сокета

Сетевое соединение – это процесс передачи данных по сети между двумя компьютерами или процессами

Сокет – конечный пункт передачи данных

Для программ сокет – одно из окончаний сетевого соединения

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

Связь между двумя сокетами может быть ориентированной на соединение

Связь между двумя сокетами может быть не ориентированной на соединение

Сокет связан с номером порта

Занятие 12. Реализация клиент-серверной модели на Java.

Абстракция сокета serverport client connection request serverport p o r t clientport connection

А что же на Java?

Сокеты инкапсулированы в экземпляры специальных классов

Все низкоуровневое взаимодействие скрыто от пользователя

Существует семейство классов, обеспечивающих настройку сокетов и работу с ними

Пакет java.net

Адресация

Установление TCP-соединения

Передача/прием дейтаграмм через UDP Обнаружение/идентификация сетевых ресурсов

Безопасность: авторизация / права доступа

Адресация

IP-адресация

Адрес сокета InetAddress Inet4Address Inet6Address SocketAddress InetSocketAddress

Занятие 12. Реализация клиент-серверной модели на Java.

Занятие 12. Реализация клиент-серверной модели на Java.

Занятие 12. Реализация клиент-серверной модели на Java.

Класс Socket Реализует клиентский сокет и его функции

Конструкторы

  • Socket()
  • Socket(InetAddress address, int port)
  • Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
  • Socket(String host, int port)
  • Socket(String host, int port, InetAddress localAddr, int localPort)

Методы

  • void close()
  • InetAddress getLocalAddress()
  • InputStream getInputStream()
  • OutputStream getOutputStream()
  • static void setSocketImplFactory(SocketImplFactory fac)
  • И прочие…

Занятие 12. Реализация клиент-серверной модели на Java.

Порядок работы с клиентским сокетом

  • Открытие сокета
  • Открытие потока ввода и/или потока вывода для сокета
  • Чтение и запись в потоки согласно установленному протоколу общения с сервером
  • Закрытие потоков ввода-вывода
  • Закрытие сокета

Пример клиента import java.io.*;

import java.net.*;

public class EchoClient { public static void main(String[] args) throws IOException { Socket echoSocket = null;

PrintWriter out = null;

BufferedReader in = null;

try { echoSocket = new Socket("taranis", 7);

out = new PrintWriter(echoSocket.getOutputStream(), true);

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

} catch (UnknownHostException e) { System.err.println("Don't know about host: taranis.");

System.exit(1);

} catch (IOException e) { System.err.println("Couldn't get I/O for the connection to:" + "taranis.");

System.exit(1);

}

Пример клиента BufferedReader stdIn = new BufferedReader( new InputStreamReader(System.in));

String userInput;

while ((userInput = stdIn.readLine()) != null) { out.println(userInput);

System.out.println("echo: " + in.readLine());

} out.close();

in.close();

stdIn.close();

echoSocket.close();

}}

Занятие 12. Реализация клиент-серверной модели на Java.

Класс ServerSocket

Реализует серверный сокет и его функции

Конструкторы

  • ServerSocket()
  • ServerSocket(int port)
  • ServerSocket(int port, int backlog)

Методы

  • void close()
  • Socket accept()
  • void bind(SocketAddress endpoint)
  • И прочие…

Создание серверного сокета

try { serverSocket = new ServerSocket(4444);

} catch (IOException e) { System.out.println( "Could not listen on port: 4444");

System.exit(-1);} Socket clientSocket = null;

try { clientSocket = serverSocket.accept();

} catch (IOException e) { System.out.println("Accept failed: 4444");

System.exit(-1);}

Занятие 12. Реализация клиент-серверной модели на Java.

Сервер параллельной обработки запросов

Стадия 1 Установление соединения клиент-сервер

Стадия 2 Сервер параллельной обработки передает управление дочернему процессу

Стадия 3 Если во время обработки запроса поступает запрос от другого клиента, сервер параллельной обработки передает управление новому дочернему процессу

Клиент 1 Сервер Клиент 1 Дочерний процесс 1 Сервер Клиент 1 Дочерний процесс 1 Сервер Клиент 2 Дочерний процесс 2

Занятие 12. Реализация клиент-серверной модели на Java.

Дейтаграммы

Дейтаграмма – независимое, самодостаточное сообщение, посылаемое по сети, чья доставка, время (порядок) доставки и содержимое не гарантируются Могут использоваться как для адресной, так и для широковещательной рассылки

Класс DatagramPacket Экземпляры класса являются прототипами дейтаграмм- сообщений

Конструкторы

  • DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
  • И прочие…

Методы

  • byte[] getData()
  • int getLength()
  • int getOffset()
  • SocketAddress getSocketAddress()
  • void setSocketAddress(SocketAddress address)
  • void setData(byte[] buf, int offset, int length)
  • И прочие…

Класс DatagramSocket

Экземпляры являются не ориентированными на соединение сокетами

Конструкторы

  • DatagramSocket()
  • DatagramSocket(int port, InetAddress laddr)
  • И другие…

Методы

  • void bind(SocketAddress addr)
  • void close()
  • void connect(InetAddress address, int port)
  • void send(DatagramPacket p)
  • void receive(DatagramPacket p)
  • И другие…

Передача дейтаграмм

Занятие 12. Реализация клиент-серверной модели на Java.

Uniform Resource Locator

URL – адрес ресурса в Интернет Имя протокола Протокол, используемый для связи Имя хоста Имя компьютера, на котором расположен ресурс Имя файла Путь к файлу на компьютере Номер порта Номер порта для соединения (необязателен) Ссылка Ссылка на именованный якорь (необязательна) Может быть абсолютным и относительным URL gamelan = new URL("http", "www.gamelan.com", 80, "pages/Gamelan.network.html");
Занятие 12. Реализация клиент-серверной модели на Java.

Прямое чтение из URL import java.net.*;

import java.io.*;

public class URLReader { public static void main(String[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/");

BufferedReader in = new BufferedReader( new InputStreamReader( yahoo.openStream()));

String inputLine;

while ((inputLine = in.readLine()) != null) { System.out.println(inputLine);

} in.close();

}}

Занятие 12. Реализация клиент-серверной модели на Java.

Чтение из URL-соединения import java.net.*;

import java.io.*;

public class URLConnectionReader { public static void main(String[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/");

URLConnection yc = yahoo.openConnection();

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

String inputLine;

while ((inputLine = in.readLine()) != null) { System.out.println(inputLine);

} in.close();

}}

Запись в URL-соединение import java.io.*;

import java.net.*;

public class Reverse { public static void main(String[] args) throws Exception { if (args.length != 1) { System.err.println("Usage: java Reverse" + "string_to_reverse");

System.exit(1);

} String stringToReverse = URLEncoder.encode(args , "US-ASCII");

URL url = new URL( "http://java.sun.com/cgi-bin/backwards");

Занятие 12. Реализация клиент-серверной модели на Java.

Запись в URL-соединение URLConnection connection = url.openConnection();

connection.setDoOutput(true);

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

out.println("string=" + stringToReverse);

out.close();

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

String inputLine;

while ((inputLine = in.readLine()) != null) System.out.println(inputLine);

in.close();

}}

Занятие 12. Реализация клиент-серверной модели на Java.

Занятие 12. Реализация клиент-серверной модели на Java.

См. Об этом говорит сайт https://intellect.icu . также

  • REST API

Исследование, описанное в статье про клиент-сервер на java, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое клиент-сервер на java и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории ООП и практические JAVA

создано: 2022-02-07
обновлено: 2022-02-07
132265



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

ООП и практические JAVA

Термины: ООП и практические JAVA