Сетевое взаимодействие

20
Сетевое взаимодействие Виталий Унгурян [email protected]

Upload: unguryan-vitaliy

Post on 05-Apr-2017

38 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Сетевое взаимодействие

Сетевое взаимодействие

Виталий Унгурян [email protected]

Page 2: Сетевое взаимодействие

Пакет java.net

Java поддерживает семейства протоколов TCP, UDP и т.д. В составе пакета java.net имеется множество классов, связанных с сетью.

Page 3: Сетевое взаимодействие

Класс InetAddress

Класс InetAddress используется для работы с числовым IP-адресом или доменным именем. Поддерживаются адреса IPv4 и IPv6.

Page 4: Сетевое взаимодействие

Класс InetAddress

Чтобы создать объекта класса InetAddress, следует использовать один из доступных методов-фабрики.

Page 5: Сетевое взаимодействие

Класс InetAddress

getLocalHost() - возвращает объект класса InetAddress, представляющий локальный хостgetByName(String host) - возвращает объект класса InetAddress хоста по указанному имениgetAllByName(String host) - возвращает массив объект класса InetAddress, представляющий все адреса, в которое преобразуется конкретное имя

Page 6: Сетевое взаимодействие

Методы класса InetAddress

byte[] getAddress() - возвращает байтовый массив, представляющий IP-адрес в порядке байтов сетиString getHostAddress() - возвращает строку, представляющую адрес хоста, ассоциированного с объектом класса InetAddressString getHostName() - возвращает строку, представляющую имя хоста, ассоциированного с объектом класса InetAddress

Page 7: Сетевое взаимодействие

Класс Socket

Класс Socket предназначен для клиентских приложений.Сокет - это программная абстракция, используемая для представления "терминалов" соединения между двумя машинами.

Page 8: Сетевое взаимодействие

Класс ServerSocket

Класс ServerSocket является слушателем и ожидает подключения клиентов. Класс предназначен для серверных приложений.

Page 9: Сетевое взаимодействие
Page 10: Сетевое взаимодействие

Простейший сервер и клиент

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

Page 11: Сетевое взаимодействие

Простейший сервер и клиент

Клиент создает соединение с сервером, затем создает OutputStream. Клиент также создает InputStream, чтобы слушать, что отвечает сервер.

Page 12: Сетевое взаимодействие

NIO

Стандартная редакция Java 2 (J2SE) в версии 1.4 ввела новые библиотеки Ввода/Вывода (New Input/Output — NIO), предназначенные для реализации высокопроизводительного ввода/вывода в Java приложениях.

Page 13: Сетевое взаимодействие

NIO

NIO использует модель ввода/вывода значительно отличающуюся от использованной в первоначальных библиотеках ввода/вывода.

Page 14: Сетевое взаимодействие

NIO

select даёт вашему серверу возможность обрабатывать огромное количество данных поступающих от множества соединений.

Page 15: Сетевое взаимодействие

NIO

select даёт вашему серверу возможность обрабатывать огромное количество данных поступающих от множества соединений.

Page 16: Сетевое взаимодействие

NIO

NIO нацелена на решение проблемы быстродействия.

Page 17: Сетевое взаимодействие

NIO

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

Page 18: Сетевое взаимодействие

NIO

Служба select являются прекрасным способом для работы одновременно с большим количеством источников данных. Она получила своё название от системного вызова Unix — select(), предоставляющего схожие возможности программам на C, запущенным на Unix системах.

Page 19: Сетевое взаимодействие

AIO, NIO.2

В Java 7 появились механизмы для обеспечения асинхронного сетевого взаимодействия. Это каналы java.nio.channels.AsynchronousSocketChannel и java.nio.channels.AsynchronousServerSocketChannel. Данные каналы содержат методы для неблокирующего установления соединения, приема соединения, записи и чтения.

Page 20: Сетевое взаимодействие

AIO, NIO.2

В Java 7 появились механизмы для обеспечения асинхронного сетевого взаимодействия. Это каналы java.nio.channels.AsynchronousSocketChannel и java.nio.channels.AsynchronousServerSocketChannel. Данные каналы содержат методы для неблокирующего установления соединения, приема соединения, записи и чтения.