Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

Сетевые приложения: передача данных с использованием сокетов (2 часа)

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ

Сетевые классы, содержащиеся в API (пакет java.net), можно разделить на две основные группы: классы, занимающиеся сокетами, и классы, занимающиеся URL. В данной главе будет обсуждаться первая группа классов.

1. Сокеты

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

Сокеты можно представить в виде двух розеток, в которые включен провод, предназначенный для передачи данных через сеть. В компьютерной терминологии - сокеты - это программный интерфейс, предназначенный для передачи данных между приложениями. Сокеты не реализуют метод передачи данных - они создают экземпляры более общих классов ввода/вывода, называемых потоками (thread), которые выполняют эту работу. Сокет переносит данные по сети; потоки занимаются тем, что закладывают данные в сокет и выдают их наружу.

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

С помощью потоковых сокетов можно создавать каналы передачи данных между двумя приложениями Java в виде потоков ввода-вывода. Потоки могут быть входными или выходными, обычными или форматированными, с использованием или без использования буферизации.

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

Для передачи данных через датаграммные сокеты не нужно создавать канал - данные непосредственно посылаются тому приложению, для которого они предназначены, с использованием адреса этого приложения в виде сокета и номера порта. При этом одно клиентское приложение может обмениваться данными с несколькими серверными приложениями или, наоборот, одно серверное приложение - с несколькими клиентскими.

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

Причина отсутствия такой гарантии доставки данных при использовании датаграммных сокетов заключается в использовании такими сокетами протокола с негарантированной доставкой UDP. Потоковые сокеты работают через протокол гарантированной доставки TCP.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]