Сетевое взаимодействие
TRANSCRIPT
![Page 2: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/2.jpg)
Пакет java.net
Java поддерживает семейства протоколов TCP, UDP и т.д. В составе пакета java.net имеется множество классов, связанных с сетью.
![Page 3: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/3.jpg)
Класс InetAddress
Класс InetAddress используется для работы с числовым IP-адресом или доменным именем. Поддерживаются адреса IPv4 и IPv6.
![Page 4: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/4.jpg)
Класс InetAddress
Чтобы создать объекта класса InetAddress, следует использовать один из доступных методов-фабрики.
![Page 5: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/5.jpg)
Класс InetAddress
getLocalHost() - возвращает объект класса InetAddress, представляющий локальный хостgetByName(String host) - возвращает объект класса InetAddress хоста по указанному имениgetAllByName(String host) - возвращает массив объект класса InetAddress, представляющий все адреса, в которое преобразуется конкретное имя
![Page 6: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/6.jpg)
Методы класса InetAddress
byte[] getAddress() - возвращает байтовый массив, представляющий IP-адрес в порядке байтов сетиString getHostAddress() - возвращает строку, представляющую адрес хоста, ассоциированного с объектом класса InetAddressString getHostName() - возвращает строку, представляющую имя хоста, ассоциированного с объектом класса InetAddress
![Page 7: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/7.jpg)
Класс Socket
Класс Socket предназначен для клиентских приложений.Сокет - это программная абстракция, используемая для представления "терминалов" соединения между двумя машинами.
![Page 8: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/8.jpg)
Класс ServerSocket
Класс ServerSocket является слушателем и ожидает подключения клиентов. Класс предназначен для серверных приложений.
![Page 9: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/9.jpg)
![Page 10: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/10.jpg)
Простейший сервер и клиент
Все, что делает сервер, это ожидает соединения, затем использует сокет, полученный при соединении, для создания потоков InputStream и OutputStream.
![Page 11: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/11.jpg)
Простейший сервер и клиент
Клиент создает соединение с сервером, затем создает OutputStream. Клиент также создает InputStream, чтобы слушать, что отвечает сервер.
![Page 12: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/12.jpg)
NIO
Стандартная редакция Java 2 (J2SE) в версии 1.4 ввела новые библиотеки Ввода/Вывода (New Input/Output — NIO), предназначенные для реализации высокопроизводительного ввода/вывода в Java приложениях.
![Page 13: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/13.jpg)
NIO
NIO использует модель ввода/вывода значительно отличающуюся от использованной в первоначальных библиотеках ввода/вывода.
![Page 14: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/14.jpg)
NIO
select даёт вашему серверу возможность обрабатывать огромное количество данных поступающих от множества соединений.
![Page 15: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/15.jpg)
NIO
select даёт вашему серверу возможность обрабатывать огромное количество данных поступающих от множества соединений.
![Page 16: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/16.jpg)
NIO
NIO нацелена на решение проблемы быстродействия.
![Page 17: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/17.jpg)
NIO
Основным преимуществом буферов является то, что они работают с данными блоками. Вы можете читать и записывать большие блоки данных, и размер буферов, используемых при этом, будет ограничен только размером памяти, который вы готовы выделить для них.
![Page 18: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/18.jpg)
NIO
Служба select являются прекрасным способом для работы одновременно с большим количеством источников данных. Она получила своё название от системного вызова Unix — select(), предоставляющего схожие возможности программам на C, запущенным на Unix системах.
![Page 19: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/19.jpg)
AIO, NIO.2
В Java 7 появились механизмы для обеспечения асинхронного сетевого взаимодействия. Это каналы java.nio.channels.AsynchronousSocketChannel и java.nio.channels.AsynchronousServerSocketChannel. Данные каналы содержат методы для неблокирующего установления соединения, приема соединения, записи и чтения.
![Page 20: Сетевое взаимодействие](https://reader035.vdocuments.site/reader035/viewer/2022080503/58e49d371a28abf5428b5697/html5/thumbnails/20.jpg)
AIO, NIO.2
В Java 7 появились механизмы для обеспечения асинхронного сетевого взаимодействия. Это каналы java.nio.channels.AsynchronousSocketChannel и java.nio.channels.AsynchronousServerSocketChannel. Данные каналы содержат методы для неблокирующего установления соединения, приема соединения, записи и чтения.