Лабораторная работа 3-08

advertisement
-1Прикладное программирование в ТС
Лабораторная работа 3-08
Лабораторная работа 3-08
Программирование приложений Java для Internet
1. ЦЕЛЬ РАБОТЫ
Целью работы является освоение средств пакета java.net для программирования
приложений Java, с использованием протоколов сети Internet.
2. СОСТАВ РАБОЧЕГО МЕСТА
2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2. Программное обеспечение: операционная система Windows, Java 2 SDK
версии 1.3 и выше.
3. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
3.1. Средства Java для работы в Internet
Язык Java обеспечивает мощные средства создания сетевых приложений для
серверов и клиентов, позволяя при помощи сравнительно небольших программ
обращаться к ресурсам Internet.
Все классы, интерфейсы и исключения, обеспечивающие реализацию сетевых
возможностей Java, находятся в пакете java.net. Ниже следует список основных
классов пакета java.net:
 InetAddress – определяет IP-адрес;
 URL – определяет указатель на ресурсы Internet;
 URLConnection –абстрактный класс, который является суперклассом для
всех классов, обеспечивающих связь между приложением и URL;
 HttpURLConnection – абстрактный класс, расширяющий класс
URLConnection и реализующий специфические характеристики протокола HTTP;
 URLEncoder –содержит метод для преобразования строки String в формат
MIME "x-www-form-urlencoded";
 URLDecoder – содержит метод для преобразования формата MIME "x-wwwform-urlencoded" в строку String;
 Socket – реализует клиентские порты, функционирующие по протоколу TCP;
 ServerSocket – реализует серверные порты, функционирующие по
протоколу TCP;
 DatagramPacket – реализует дейтаграммный пакет для работы по протоколу
UDP;
 DatagramSocket – реализует порт для посылки и приема дейтаграмм по
протоколу UDP.
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
-2Прикладное программирование в ТС
Лабораторная работа 3-08
3.2. Класс InetAddress
Для работы с адресами хостов сети Internet (числовыми или символьными) Java
использует класс InetAddress.
Числовой адрес – это четырехбайтовое десятичное число, обычно имеющее форму
a.b.c.d, например, 192.100.81.100. Символьный адрес определяет имя хоста, например,
netcom.com.
Основные методы класса InetAddress представлены в таблице:
Вызов
Возвращаемое
значение
equals(Object obj)
boolean
getAddress()
byte[]
getAllByName(String host)
throws
UnknownHostException
static
InetAddress[]
getByAddress(byte[] addr)
throws
UnknownHostException
static
InetAddress
getByAddress(String host,
byte[] addr) throws
UnknownHostException
static
InetAddress
getByName(String host)
throws
UnknownHostException
static
InetAddress
getHostAddress()
String
getHostName()
String
getLocalHost()throws
UnknownHostException
static
InetAddress
isLoopbackAddress()
boolean
isSiteLocalAddress()
boolean
Действие
Сравнивает два объекта
InetAddress на равенство.
Возвращает массив из 4
элементов с компонентами
числового адреса хоста.
Возвращает массив объектов
InetAddress для хоста
host.
Возвращает объект
InetAddress по заданным в
четырех элементах массива
addr компонентам числового
адреса.
Возвращает объект
InetAddress по заданным в
четырех элементах массива
addr компонентам числового
адреса и символьному имени
хоста (без проверки имени).
Возвращает объект
InetAddress по заданному
символьному имени хоста
host.
Возвращает IP-адрес в
текстовом представлении.
Возвращает имя хоста.
Возвращает объект
InetAddress для локального
хоста.
Проверка, имеет ли адрес
значение 127.0.0.1
(«обратная петля»).
Проверка, является ли адрес
адресом локального сайта.
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
-3Прикладное программирование в ТС
Лабораторная работа 3-08
Вызов
Возвращаемое
значение
String
toString()
Действие
Преобразует адрес в строковое
представление.
Пример вывода числового адреса хоста:
byte[] addr = someInetAddress.getAddress();
System.out.println((addr[0]&0xff)+"."+(addr[1]&0xff)+"."+
(addr[2]&0xff)+"."+(addr[3]&0xff));
Значения адресов логически умножаются (функцией AND) на шестнадцатеричное
значение ff (десятичное 255) поскольку байтовые значения в Java являются 8разрядными числами со знаком. При умножении адреса значение не меняется, но
трактуется как 32-разрядное целое, у которого самый левый разряд равен 0, а восемь
правых представляют адрес.
3.3. Классы URL, URLConnection, HttpURLConnection,
URLEncoder и URLDecoder
Класс URL позволяет создать объект, содержащий всю необходимую информацию
для доступа к сетевому ресурсу. Объект URL позволяет также получить данные с
удаленного компьютера.
Класс URL имеет следующие основные конструкторы:
public URL(String spec) throws MalformedURLException
public URL(String protocol, String host, String file)
throws MalformedURLException
public URL(String protocol, String host, int port,
String file) throws MalformedURLException
public URL(URL context, String spec)
throws MalformedURLException
В этих конструкторах используются следующие параметры:
 spec – строка, содержащая URL;
 protocol – используемый протокол;
 host – адрес компьютера;
 file –путь к файлу;
 port – номер порта;
 context – URL, используемый для создания нового URL (полный URL
получается путем сцепления строк context и spec).
Все конструкторы могут возбуждать исключение MalformedURLException,
возникающее, если не опознан протокол, либо URL имеет неправильный синтаксис.
Пример конструктора:
URL URLObject = new URL("http://www.yahoo.com/");
Основные методы класса URL приведены в следующей таблице:
Вызов
equals(Object obj)
Возвращаемое
значение
boolean
Действие
Сравнивает два объекта URL на
равенство.
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
-4Прикладное программирование в ТС
Лабораторная работа 3-08
Вызов
getContent()
throws IOException
getDefaultPort()
Возвращаемое
значение
Действие
getFile()
String
getHost()
String
getPath()
String
getPort()
int
getProtocol()
String
getQuery()
String
getRef()
String
getUserInfo()
String
openConnection() throws
IOException
URLConnection
openStream()throws
IOException
InputStream
set(String protocol,
String host, int port,
String file, String ref)
protected
void
Получает содержимое
заданного URL.
Возвращает номер порта по
умолчанию для заданного в
объекте URL протокола.
Возвращает имя файла для
объекта URL.
Возвращает имя хоста для
объекта URL.
Возвращает путь для объекта
URL.
Возвращает номер порта для
объекта URL.
Возвращает имя протокола для
объекта URL.
Возвращает запрос (после
символа "?") для объекта URL.
Возвращает внутреннюю
ссылку (после символа "#") для
объекта URL.
Возвращает имя и пароль
пользователя для объекта URL.
Возвращает объект
URLConnection,
представляющий связь с
удаленным объектом, на
который ссылается URL.
Открывает связь с удаленным
объектом, на который
ссылается URL для чтения.
Устанавливает заданные
компоненты URL.
set(String protocol,
String host, int port,
String authority,
String userInfo,
String path,
String query,
String ref)
toString()
protected
void
Устанавливает заданные
компоненты URL.
String
Возвращает строковое
представление объекта URL.
final Object
int
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
-5Прикладное программирование в ТС
Лабораторная работа 3-08
Создав объект URL, можно получать данные из сети. Для этого можно выбрать
один из двух способов:
 непосредственное чтение ресурса по объекту URL с помощью метода
openStream();
 создание объекта URLConnection.
Непосредственное чтение ресурса требует меньше программного текста, но это
решение обеспечивает доступ к ресурсу только для чтения.
При использовании второго метода подключения к ресурсу сначала с помощью
метода openConnection() класса URL создается объект, а затем используются методы
класса URLConnection, основные из которых представлены в следующей таблице:
Вызов
Возвращаемое
значение
Действие
addRequestProperty(String
key, String value) throws
IllegalStateException,
NullPointerException
getContent()
throws IOException
getContentEncoding()
void
Добавляет свойство запроса,
заданное парой «ключзначение».
Object
getContentLength()
int
getContentType()
String
getDate()
long
getDoInput()
boolean
getDoOutput()
boolean
getExpiration()
long
getHeaderField(int n)
String
getHeaderField(String
name)
String
Получает содержимое
заданного URL.
Возвращает значение поля
content-encoding в
заголовке.
Возвращает значение поля
content-length в
заголовке.
Возвращает значение поля
content-type в заголовке.
Возвращает значение поля
date в заголовке.
Возвращает true, если для
данного URLConnection
разрешен ввод, иначе false.
Возвращает true, если для
данного URLConnection
разрешен вывод, иначе false.
Возвращает значение поля
expires в заголовке.
Возвращает значение n-го поля
в заголовке.
Возвращает значение поля
name в заголовке.
getHeaderFieldKey(int n)
String
String
Возвращает значение ключа
для n-го поля в заголовке.
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
-6Прикладное программирование в ТС
Лабораторная работа 3-08
Вызов
Возвращаемое
значение
getInputStream()throws
IOException
InputStream
getLastModified()
long
getOutputStream()throws
IOException
OutputStream
getRequestProperty(String
key) throws
IllegalStateException
String
getURL()
URL
setDoInput(boolean
doinput) throws
IllegalStateException
void
setDoOutput(boolean
dooutput) throws
IllegalStateException
void
setRequestProperty(String
key, String value)
void
Действие
Возвращает входной поток,
который будет читать из
открытого соединения.
Возвращает значение поля
last-modified в заголовке.
Возвращает выходной поток,
который будет писать в
открытое соединение.
Возвращает значение
именованного общего свойства
запроса для заданного
соединения.
Возвращает значение URL для
заданного соединения.
Устанавливает разрешение
(true) или запрещение
(false) возможности ввода
для соединения (по умолчанию
true).
Устанавливает разрешение
(true) или запрещение
(false) возможности вывода
для соединения (по умолчанию
false).
Устанавливает общее свойство
запроса.
Подкласс HttpURLConnection класса URLConnection поддерживает средства
соединения, специфичные для протокола HTTP.
Конструктор класса
protected HttpURLConnection(URL u)
создает объект для заданного u.
Основные методы этого класса:
Вызов
Возвращаемое
значение
getErrorStream()
InputStream
getRequestMethod()
String
Действие
Возвращает поток сообщений
об ошибках, если при
обработке запроса сервером
произошла ошибка.
Возвращает метод запроса
(например, "GET" или "PUT")
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
-7Прикладное программирование в ТС
Лабораторная работа 3-08
Вызов
setRequestMethod(String
method) throws
ProtocolException
getResponseCode()throws
IOException
getResponseMessage()
throws IOException
Возвращаемое
значение
Действие
void
Устанавливает метод запроса.
int
Возвращает код ответа сервера
(например, 200).
Возвращает сообщение ответа
сервера (например,
"HTTP/1.0 200 OK").
String
Для преобразования данных формы при приеме и передаче используются классы
URLEncoder и URLDecoder.
Класс URLEncoder содержит статический метод
public static String encode(String s, String enc),
который преобразует строку s с кодировкой enc (например, "cp1251" или "cp866") в
формат x-www-form-urlencoded, используемый для передачи данных формы на
сервер. При этом
буквы, цифры и знак подчеркивания не меняется. Пробелы
преобразуются в символы "+", а все остальные символы переводятся в
шестнадцатеричную форму и записываются в виде %xx, где xx — шестнадцатеричное
представление символа. Метод
public static String decode(String s, String enc)
класса URLDecoder осуществляет обратное преобразование.
3.4. Классы Socket и ServerSocket
С помощью механизма сокетов, описывающих сетевое соединение с другим
приложением, разработчик может создавать свои прикладные протоколы, отличные от
HTTP.
Сокеты часто используются в приложениях клиент-сервер: централизованная
служба ждет дистанционных обращений от различных машин с запросами конкретных
ресурсов и обрабатывает запросы по мере поступления.
Приложение-клиент также должно привязаться к порту, чтобы начать обмен через
сокет. Поскольку связь инициируется со стороны клиента, конкретный номер порта не
имеет большого значения и может быть выбран непосредственно при установлении
соединения. Как правило, приложениям-клиентам даются динамически назначаемые
порты с номерами, большими 1024.
Поскольку два приложения могут одновременно привязаться к одному порту на
одной и той же машине, сокет служит уникальным идентификатором сетевого
соединения, благодаря тому, что клиенты будут работать на разных машинах или разных
портах, и таким образом обеспечивается уникальность соединения.
В Java имеется два стандартных класса, которые позволяют создавать сетевые
приложения на основе сокетов с использованием протокола TCP: Socket и
ServerSocket.
Класс Socket применяется для организации обычного двустороннего обмена
данными и имеет следующие основные конструкторы:
public Socket()
public Socket(String host, int port)
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
-8Прикладное программирование в ТС
Лабораторная работа 3-08
throws UnknownHostException, IOException
public Socket(InetAddress address, int port)
throws IOException
public Socket(InetAddress address, int port,
InetAddress localAddr, int localPort)
throws IOException
public Socket(String host, int port, InetAddress localAddr,
int localPort) throws IOException
Первый конструктор создает сокет без соединения. Остальные конструкторы
создают сокет со следующими параметрами:
 host – имя хоста;
 port – номер порта;
 address – IP-адрес хоста;
 localAddr – адрес локального хоста;
 localPort – номер локального порта.
Класс Socket содержит следующие основные методы:
Вызов
Возвращаемое
значение
close()throws IOException
getInetAddress()
void
InetAddress
getInputStream()
throws IOException
getLocalAddress()
InputStream
getLocalPort()
int
public getOutputStream()
throws IOException
getPort()
OutputStream
isBound()
boolean
isClosed()
boolean
isConnected()
boolean
InetAddress
int
Действие
Закрывает сокет.
Возвращает адрес хоста, к
которому подключен сокет.
Возвращает входной поток для
сокета.
Возвращает IP-адрес локального
хоста, к которому подключен
сокет.
Возвращает номер локального
порта, к которому подключен
сокет.
Возвращает выходной поток для
сокета.
Возвращает номер удаленного
порта, к которому подключен
сокет.
Возвращает состояние
подключения сокета: true –
если подключен и false – в
противном случае.
Возвращает состояние закрытия
сокета: true – если закрыт и
false – в противном случае.
Возвращает состояние связи
сокета: true – если на связи и
false – в противном случае.
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
-9Прикладное программирование в ТС
Лабораторная работа 3-08
Вызов
Возвращаемое
значение
isInputShutdown()
boolean
isOutputShutdown()
boolean
sendUrgentData(int data)
throws IOException
shutdownInput()
throws IOException
shutdownOutput()
throws IOException
void
void
void
Действие
Возвращает состояние читающей
половины сокета: true – если
закрыта и false – в противном
случае.
Возвращает состояние пишущей
половины сокета: true – если
закрыта и false – в противном
случае.
Посылает один байт срочных
данных в сокет.
Переводит входной поток в
состояние «конец потока».
Отменяет выходной поток для
сокета.
Класс ServerSocket прослушивает поступающие запросы на соединение и
создает объект Socket для каждого нового соединения.
Для класса Определены следующие конструкторы:
public Socket()
public ServerSocket (int port) throws IOException
public ServerSocket(int port, int backlog)
throws IOException
public ServerSocket(int port, int backlog,
InetAddress bindAddr) throws IOException
Первый конструктор создает серверный сокет без соединения. В остальных конструкторах
задаются следующие параметры:
 port – номер порта, к которому подключен серверный сокет (если в качестве
номера порта задано значение 0, то номер порта выбирает система);
 backlog – максимальная длина очереди для журнала невыполненных запросов
(если длина превышена, сервер не обслуживает новых клиентов).
 bindAddr – локальный IP-адрес, к которому подключается серверный сокет.
Класс ServerSocket содержит следующие основные методы:
Вызов
Возвращаемое
значение
accept() throws
IOException
close()throws IOException
Socket
getInetAddress()
InetAddress
void
Действие
Слушает соединение для
сокета.
Закрывает соединение для
серверного сокета.
Возвращает IP-адрес хоста, к
которому подключен
серверный сокет.
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 10 Прикладное программирование в ТС
Лабораторная работа 3-08
Вызов
Возвращаемое
значение
getLocalPort()
int
isBound()
boolean
isClosed()
boolean
Действие
Возвращает номер локального
порта, который прослушивает
серверный сокет.
Возвращает состояние
подключения серверного
сокета: true – если подключен
и false – в противном случае.
Возвращает состояние
закрытия серверного сокета:
true – если закрыт и false –
в противном случае.
3.5. Классы DatagramPacket и DatagramSocket
Протокол UDP является ненадежным, основанным на сообщениях протоколом без
установления логического соединения. В этом протоколе диалог должен быть разделен на
небольшие сообщения, которые умещаются в небольшой пакет определенного размера.
Такие сообщения, которыми обмениваются сетевые программы, называются
дейтаграммами (datagrams). Дейтаграмма содержит массив байтов. Принимающая
программа может извлечь этот массив и декодировать информацию, а затем, возможно,
послать ответную дейтаграмму.
Программирование с использованием UDP требует решить следующие задачи:
 Создание правильно адресованной дейтаграммы;
 Создание сокета для рассылки и получения дейтаграмм данным приложением;
 Помещение дейтаграмм в сокет для передачи по назначению;
 Ожидание получения дейтаграмм из сокета;
 Декодирование дейтаграмм для выделения самого сообщения, адреса
отправителя и другой служебной информации.
Механизм обмена дейтаграммами по протоколу UDP реализован в языке Java с
использованием классов DatagramPacket и DatagramSocket.
Класс DatagramPacket используется для создания дейтаграмм. При получении
дейтаграммы по протоколу UDP класс DatagramPacket используется также для чтения
данных, адреса отправителя и служебной информации.
Создать отсылаемый пакет DatagramPacket можно с помощью одного из
следующих конструкторов:
public DatagramPacket(byte[] buf, int length,
InetAddress address, int port)
public DatagramPacket(byte[] buf, int offset, int length,
InetAddress address, int port)
В этих конструкторах задаются следующие параметры:
 buf – это массив байт, содержащий отправляемое сообщение;
 offset – смещение, начиная с которого будут передаваться данные
(используется для фрагментации дейтаграмм);
 length – количество байт, которое должно быть помещено в пакет;
 address – IP-адрес получателя;
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 11 Прикладное программирование в ТС
Лабораторная работа 3-08
 port – указывает номер порта, на который посылается дейтаграмма.
Когда объект DatagramPacket создается для приема данных можно
воспользоваться одним из следующих конструкторов:
public DatagramPacket(byte[] buf, int length)
public DatagramPacket(byte[] buf,
int offset, int length)
В этих конструкторах определены следующие параметры:
 buf –массив байт, в который будет помещаться принятая дейтаграмма;
 length – количество считываемых байт;
 offset – смещение в массиве байт, начиная с которого помещается
дейтаграмма (используется для фрагментированных диаграмм).
Класс DatagramPacket предоставляет следующие методы для работы с
дейтаграммами:
Вызов
Возвращаемое
значение
getAddress()
InetAddress
getData()
byte[]
getLength()
int
getOffset()
int
getPort()
int
setAddress(InetAddress
iaddr)
setData(byte[] buf)
throws
NullPointerException
setData(byte[] buf,
int offset, int length)
throws
NullPointerException
setLength(int length)
throws
IllegalArgumentException
setPort(int iport)
void
Действие
Возвращает IP-адрес хоста, на
который посылаются
дейтаграммы или с которого
принимаются дейтаграммы.
Возвращает буферную область
для приема или передачи
данных.
Возвращает длину посылаемых
или принимаемых данных.
Возвращает смещение
посылаемых или принимаемых
данных.
Возвращает номер порта на
удаленном хосте, куда
посылаются или откуда
принимаются данные.
Устанавливает адрес хоста, на
который посылаются данные.
void
void
Устанавливает буфер для данных
с длиной пакета, равной length
и со смещением offset.
void
Устанавливает длину пакета в
буфере данных.
void
Устанавливает порт на
удаленном хосте, в который
посылается дейтаграмма.
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 12 Прикладное программирование в ТС
Лабораторная работа 3-08
Отправка и получение дейтаграмм осуществляется при помощи класса
DatagramSocket, который создает сокет UDP.
Для класса определены следующие конструкторы:
public DatagramSocket() throws SocketException
public DatagramSocket(int port) throws SocketException
public DatagramSocket(int port, InetAddress laddr)
throws SocketException
В первом конструкторе номер порта будет назначен автоматически (программа
должна указывать номер порта лишь в тех случаях, когда другие программы посылают ей
дейтаграммы по собственной инициативе). Во втором конструкторе задается конкретный
порт для отправки и приема дейтаграмм (этот конструктор используется для сервера).
Третий конструктор позволяет, кроме порта, задать IP-адрес (этот конструктор обычно
используется на сервере в том случае, если для хоста зарезервировано несколько IPадресов).
Класс DatagramSocket предоставляет следующие основные методы:
Вызов
Возвращаемое
значение
Действие
close()
connect(InetAddress
address, int port) throws
IllegalArgumentException,
SecurityException
disconnect()
getInetAddress()
void
void
Закрывает дейтаграммный сокет.
Подключает сокет к удаленному
адресу для этого сокета.
void
InetAddress
getLocalAddress()
InetAddress
getLocalPort()
int
getPort()
int
isBound()
boolean
isClosed()
boolean
Отключает сокет.
Возвращает адрес удаленного
хоста для сокета.
Возвращает адрес локального
хоста для сокета.
Возвращает номер локального
порта для сокета.
Возвращает номер удаленного
порта для сокета.
Возвращает состояние
подключения сокета: true –
если подключен и false – в
противном случае.
Возвращает состояние закрытия
сокета: true – если закрыт и
false – в противном случае.
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 13 Прикладное программирование в ТС
Лабораторная работа 3-08
Возвращаемое
значение
Вызов
isConnected()
receive(DatagramPacket p)
throws IOException
send(DatagramPacket p)
throws IOException
boolean
void
void
Действие
Возвращает состояние связи
сокета: true – если на связи и
false – в противном случае.
Получает дейтаграммный пакет
из сокета.
Посылает дейтаграммный пакет
в сокет.
4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Напишите программу на языке Java по одному из приведенных ниже вариантов.
Каждая программа содержит клиентскую и серверную часть, выполненную как
приложение Swing (для ввода и вывода данных используются текстовые поля и/или
текстовые области, для начала обмена – кнопки). Обмен данными между приложениями
выполняется с помощью классов, определенных в варианте. При выполнении программ
Web-сервера и Web-клиента каждая из них выполняется в отдельном окне. В качестве
адреса компьютера используется адрес 127.0.0.1, а в качестве номера порта
рекомендуется использовать число, большее 1024, например, 8080.
Вариант 1
Создать Web-сервер, выводящий в текстовой области номер запроса, а также имена
и значения параметров, переданных Web-клиентом по методу GET (после символа "?" в
URL) или соответствующее сообщение, если параметры не получены. В программе Webклиента в текстовом поле вводится запрос и, при нажатии кнопки, посылается на сервер.
Вариант 2
Создать простой сервер новостей и клиент новостей для добавления новостей на
сервере. Клиент и сервер взаимодействуют между собой с использованием сокетов TCP.
Клиент новостей при подключении задает в текстовом поле свое имя и получает список
разделов новостей в каталоге сервера (оглавление выводится в текстовой области). Для
отправки новости пользователь вводит имя раздела новостей и тему посылаемой новости
в текстовых полях и в текстовой области вводит текст новости.
Сервер новостей при запуске формирует оглавление текущего каталога и, при
подключении пользователя, посылает ему это оглавление. Имя каждого файла совпадает с
именем раздела новостей. Файл раздела содержит новости, каждая из которых имеет
следующий формат:
N:номер-новости Subject:тема-новости
текст новости
При приеме от пользователя имени раздела и текста новости сервер добавляет
заголовок и содержание новости в соответствующий текстовый файл, либо сообщение об
отсутствии данного раздела. Имена подключаемых пользователей и сообщения о
принятых от них новостях (номер и тема новости) выводится в текстовой области.
Вариант 3
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 14 Прикладное программирование в ТС
Лабораторная работа 3-08
Создать Web-сервер, обрабатывающий запросы от Web-браузера (например,
Internet Explorer) для файлов в текущем каталоге Web-сервера. Web-сервер выводит в
текстовом поле время начала соединения, имена и значения полученных полей
заголовков, а также результат поиска файла. Если файл найден, его содержимое
посылается Web-браузеру со сформированным заголовком ответа, например:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: длина-передаваемого-файла-в-байтах
пустая строка
содержимое передаваемого файла
Если файл не был найден, Web-браузеру посылается строка:
HTTP/1.1 404 Not Found
Вариант 4
Создать простой сервер рассылки и клиент для приема файлов с сервера рассылки.
Клиент и сервер взаимодействуют между собой с использованием сокетов TCP. Клиент
при запуске формирует (с помощью методов класса File) список файлов своего
каталога, а также время последней модификации каждого файла. Каждый элемент списка
занимает отдельную строку и имеет следующий формат:
Name:имя-файла Mod:дата-последней-модификации
После ввода имени в текстовом поле и нажатия кнопки "Прием" клиент передает
список файлов на сервер, получает файлы с сервера и сохраняет их в своем текущем
каталоге.
Сервер рассылки при запуске формирует список файлов в своем каталоге, а также
дату последней модификации каждого файла. После подключения клиента сервер
получает список файлов каталога клиента и сравнивает его с содержимым своего
каталога. Если файл есть в каталоге сервера, но отсутствует в каталоге клиента, он
посылается клиенту. Если файл есть и в каталоге клиента и в каталоге сервера, но дата
последней модификации в каталоге сервера больше, чем в каталоге клиента, файл также
посылается клиенту. В остальных случаях передача файла не выполняется. Имена
подключаемых пользователей и список переданных им файлов выводится в текстовой
области.
Вариант 5
Создать Web-сервер, выводящий в текстовой области номер запроса, а также имена
и значения параметров, переданных Web-клиентом по методу POST (в теле запроса) или
соответствующее сообщение, если параметры не получены. В программе Web-клиента в
двух текстовых полях вводятся имя и значение параметра (признаком окончания ввода
является ввод пустого имени) При нажатии кнопки формируется запрос и посылается на
сервер. Пример запроса по методу POST:
Content-type: application/x-www-form-urlencoded
Content-length: 24
Пустая строка
name=John&password=Smith
Вариант 6
Создать программу синхронизации данных в каталогах двух серверов. Сервера
взаимодействуют между собой с использованием сокетов TCP. При запуске с помощью
альтернативных переключателей одному из серверов задается активный режим, другому
пассивный. Активный сервер через определенные промежутки времени формирует (с
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 15 Прикладное программирование в ТС
Лабораторная работа 3-08
помощью методов класса File) список файлов и времена последней модификации
каждого файла для заданного в текстовом поле каталога, а затем связывается с
пассивным сервером и передает ему созданный список, каждая строка которого имеет
следующий формат:
Name:имя-файла Mod:дата-последней-модификации
После этого активный сервер получает от пассивного сервера новые или
обновленные файлы, а затем, с помощью списка, полученного от пассивного сервера,
передает пассивному серверу свои новые или обновленные файлы.
Пассивный сервер при запуске и через заданные промежутки времени формирует
список файлов и времена последней модификации каждого файла для заданного в
текстовом поле каталога. При подключении активного сервера пассивный сервер
сравнивает полученный список со своим списком. Если файл есть в каталоге пассивного
сервера, но отсутствует в каталоге активного сервера, он посылается активному серверу.
Если файл есть в обоих каталогах, но дата последней модификации в каталоге пассивного
сервера больше, чем в каталоге активного сервера, файл также посылается активному
серверу. В остальных случаях передача файла не выполняется. После этого, если файл
есть в каталоге активного сервера, но отсутствует в каталоге пассивного сервера или дата
последней модификации файла в каталоге активного сервера больше, чем дата последней
модификации того же файла в каталоге пассивного сервера, пассивный сервер посылает
активному серверу запрос на прием этого файла. Имена принятых и переданных в сеансе
обмена файлов выводится в текстовой области каждого сервера.
Вариант 7
Создать простой сервер новостей и клиент новостей для чтения новостей на
сервере. Клиент и сервер взаимодействуют между собой с использованием сокетов TCP.
Клиент новостей при подключении задает в текстовом поле свое имя и получает список
разделов новостей в каталоге сервера (оглавление выводится в текстовой области). Для
получения списка новостей раздела пользователь вводит имя раздела в другом текстовом
поле и в текстовой области получает список номеров и тем сообщений. По заданному
номеру сообщения пользователь получает текст сообщения в текстовой области.
Сервер новостей при запуске формирует оглавление текущего каталога и, при
подключении пользователя, посылает ему это оглавление. Имя каждого файла совпадает с
разделом новостей. Файл раздела содержит новости, каждая из которых имеет
следующий формат:
N:номер-новости Subject:тема
текст новости
При приеме имени раздела сервер посылает номера и темы новостей, хранящихся в
файле, имя которого совпадает с именем раздела, либо сообщение об отсутствии данного
раздела. При приеме номера новости от пользователя сервер либо посылает ему
указанную новость, либо сообщает пользователю об отсутствии новости с заданным
номером, а затем снова посылает оглавление текущего каталога. Имена подключаемых
пользователей и сообщения о посланных им новостях выводится в текстовой области.
Вариант 8
Создать Web-браузер, записывающий принятый файл в текущий каталог и
вызывающий для просмотра файла соответствующую программу notepad.exe или
explorer.exe, в зависимости от типа принятого файла (text/plain или
text.html). Последовательность операторов в программе Java для вызова внешней
программы:
Runtime r = Runtime.getRuntime();
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 16 Прикладное программирование в ТС
Лабораторная работа 3-08
Process p = null;
String cmd[] = {"имя-программы", "имя-файла"};
try {
p = r.exec(cmd);
}
catch (Exception e) {
System.out.println("Error executing notepad.");
}
В качестве имени-программы задается notepad.exe или explorer.exe.
Вариант 9
Создать простой сервер рассылки с ограниченным доступом и клиент для приема
файлов с сервера рассылки. Клиент и сервер взаимодействуют между собой с
использованием сокетов TCP. Клиент при подключении задает в текстовом поле свое имя
и пароль и получает содержимое файлов своего каталога на сервере (оглавление
выводится в текстовой области). Содержимое каждого файла передается после нажатия
кнопки "Прием" и сначала выводится в текстовую область, а затем может быть выведено
(после нажатия кнопки "Сохранить") в файле в текущем каталоге клиента.
Сервер рассылки при подключении пользователя просматривает файл с именами и
паролями и, если имя и пароль указаны правильно, посылает клиенту по одному файлу
(после получения запроса от клиента). Файлы для клиента содержатся в каталоге, имя
которого совпадает с именем клиента. На запрос после передачи последнего файла или
если каталог клиента пуст, выводится сообщение "Все файлы переданы". Если имя
и/или пароль пользователя заданы неверно, клиенту выводится соответствующее
сообщение. Имена подключаемых пользователей и список переданных им файлов
выводится в текстовой области.
Вариант 10
Создать Web-сервер, записывающий в текущий каталог файл, переданный Webклиентом по методу PUT. В программе Web-клиента при нажатии кнопки выводится окно
JFileChooser. После выбора файла при нажатии второй кнопки запрос посылается на
сервер. Пример запроса по методу PUT:
PUT /new.html HTTP/1.0
Content-type: text/html
Content-length: длина-файла-в-байтах
Пустая строка
Содержимое файла
Вариант 11
Создать широковещательный сервер рассылки и клиент для приема сообщений с
сервера рассылки. Клиент и сервер взаимодействуют между собой с использованием
сокетов UDP. Клиент при запуске формирует список номеров и дат сообщений в своем
файле сообщений (каждый элемент списка занимает отдельную строку). Каждый элемент
файла сообщений имеет следующий формат:
N:номер-сообщения Date:дата-сообщения
текст сообщения
После ввода имени и нажатия кнопки "Прием" клиент передает серверу свой
список имеющихся сообщений, а затем получает от сервера те сообщения, которых у него
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 17 Прикладное программирование в ТС
Лабораторная работа 3-08
нет. Эти сообщения выводятся в текстовую область и дописываются в конец файла
сообщений.
Сервер рассылки при запуске формирует список номеров и дат сообщений в своем
файле сообщений. При подключении пользователя сервер сравнивает полученный список
сообщений со своим списком, формирует список неотправленных клиенту сообщений, а
затем просматривает файл сообщений и посылает клиенту недостающие сообщения.
Имена подключаемых пользователей, а также номера и даты переданных им сообщений
выводится в текстовой области.
Вариант 12
Создать простой файловый сервер и файловый клиент для управления файлами на
сервере. Клиент и сервер взаимодействуют между собой с использованием сокетов TCP.
Файловый клиент при подключении задает в текстовом поле свое имя и получает
оглавления файлов в каталоге сервера (оглавление выводится в текстовой области). Для
переименования или удаления файла пользователь вводит имя файла в текстовом поле,
новое имя файла (при переименовании), а затем с помощью кнопок "Переименовать"
или "Удалить" на сервер передается одно из следующих сообщений:
Rename:имя-файла New:новое-имя или Delete:имя-файла
Файловый сервер при запуске формирует оглавление текущего каталога и, при
подключении пользователя, посылает ему это оглавление. При приеме сообщения от
пользователя сервер выполняет операцию переименования или удаления, либо сообщает
пользователю об отсутствии файла с заданным именем, а затем снова посылает
оглавление текущего каталога. Имена подключаемых пользователей и сообщения о
выполненных операциях выводится в текстовой области.
Вариант 13
Создать Web-сервер с использованием виртуальных каталогов. Имена виртуальных
каталогов и соответствующие им пути к физическим каталогам хранятся в файле. Webсервер определяет в первой строке запроса
GET имя-виртуального-каталога/имя-файла HTTP/1.0
реальный путь к файлу и посылает Web-браузеру (например, Internet Explorer) найденный
файл:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: длина-передаваемого-файла-в-байтах
пустая строка
содержимое передаваемого файла
Если файл или каталог не найдены, Web-браузеру посылается строка:
HTTP/1.1 404 Not Found
Вариант 14
Создать chat-сервер с ограниченным доступом и клиент для управления доступом к
этому серверу. Связь между клиентом и сервером осуществляется на основе сокетов
протокола UDP. Клиент при подключении вводит свое имя и пароль в текстовых полях, и
после нажатия кнопки "Подключить" получает список пользователей сервера. Для
добавления или удаления пользователей клиент задает имя добавляемого или удаляемого
пользователя (при добавлении пользователя задается также его пароль), а затем нажимает
кнопку соответствующей операции. Сообщения на сервер посылаются в одном из
следующих форматов:
Add:имя-пользователя Pass:пароль
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 18 Прикладное программирование в ТС
Лабораторная работа 3-08
Delete:имя-пользователя
После выполнения операции на сервере результат успешного или неуспешного
выполнения операции
выводится в текстовом поле. После успешного выполнения
операции в этом же текстовом поле выводится новый список пользователей.
Chat-сервер после подключения клиента проверяет его имя и пароль, хранящиеся в
файле (имя и пароль каждого пользователя задаются в отдельной строке). Если имя и
пароль заданы правильно, сервер посылает клиенту содержимое файла имен и паролей.
При получении сообщения об операции она выполняется (новый пользователь
добавляется в конец файла или строка с именем и паролем пользователя удаляется из
файла с использованием временного файла). После этого клиенту снова посылается
содержимое файла имен и паролей. Если при удалении не найдено имя пользователя или
при добавлении пользователь с таким именем уже есть в файле, операция не выполняется
и клиенту посылается соответствующее сообщение. Сообщения о результатах операции
выводятся в текстовой области.
Вариант 15
Создать Web-сервер, проверяющий наличие файла на сервере (в текущем каталоге
Web-сервера) по методу HEAD. В программе Web-клиента в текстовом поле вводится имя
проверяемого файла и, при нажатии кнопки, запрос посылается на сервер. Сообщение о
наличии или отсутствии файла передается Web-клиенту. Пример запроса по методу HEAD:
HEAD /products/index.html HTTP/1.0
Вариант 16
Создать chat-сервер с ограниченным доступом и клиент на основе сокетов
протокола UDP. Клиент при подключении вводит свое имя и пароль в текстовых полях, и
после нажатия кнопки "Подключить" получает список активных в настоящий момент
пользователей. Для получения текущего состава активных пользователей в течение сеанса
следует нажать кнопку "Обновить". После ввода в текстовом поле имени клиентаполучателя, текст сообщения вводится в текстовом поле. В этом же поле выводится ответ
пользователя.
Chat-сервер после подключения клиента проверяет его имя и пароль, хранящиеся в
файле (имя и пароль каждого пользователя задаются в отдельной строке). Если имя и
пароль заданы правильно, сервер регистрирует клиента в списке активных пользователей,
и при получении сообщения от клиента передает его указанному пользователю. Если имя
и/или пароль введены неверно, клиенту посылается соответствующее сообщение.
Сообщения о клиенте-отправителе и клиенте получателя, а также временная отметка об
обмене выводится в текстовой области.
Вариант 17
Создать простой файловый сервер и файловый клиент для передачи файлов.
Клиент и сервер взаимодействуют между собой с использованием сокетов TCP. Файловый
клиент при подключении задает в текстовом поле свое имя и получает оглавления файлов
в каталоге сервера (оглавление выводится в текстовой области). Для отправки файла
пользователь выбирает имя файла с помощью окна JFileChooser и, при нажатии
кнопки, выполняется передача файла по следующему формату:
File:имя-файла
содержимое файла
Файловый сервер при запуске формирует оглавление текущего каталога и, при
подключении пользователя, посылает ему это оглавление. При приеме файла сервер
определяет переданное в первой строке имя файла и запоминает принятый файл с этим
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 19 Прикладное программирование в ТС
Лабораторная работа 3-08
именем в текущем каталоге. Имена подключаемых пользователей и сообщения о
принятых от них файлах выводится в текстовой области.
Вариант 18
Создать Web-сервер, проверяющий имя и пароль, вводимые клиентом в
добавляемых пользовательских заголовках Name: и Password:. В программе Webклиента в текстовых полях вводятся имя, пароль и запрашиваемый ресурс. Web-сервер
анализирует пользовательские заголовки, просматривает файл, в котором хранятся имена
и пароли, а затем, если имя и пароль заданы правильно, посылает запрашиваемый файл:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: длина-передаваемого-файла-в-байтах
пустая строка
содержимое передаваемого файла
Если файл не был найден, Web-браузеру посылается строка:
HTTP/1.1 404 Not Found
Если же посланы неверное имя и/или пароль, Web-браузеру посылается строка:
HTTP/1.1 800 Incorrect name or password
Вариант 19
Создать поисковый сервер адресов электронной почты и клиент на основе сокетов
протокола UDP. Клиент в текстовом поле задает критерий поиска (символы, которые
должны содержатся в имени абонента и/или адресе электронной почты). После нажатия
кнопки запрос передается серверу. Полученный ответ – список имен абонентов и адреса
электронной почты, удовлетворяющие заданным критериям, или сообщение
об
отсутствии абонента выводится в текстовой области.
Поисковый сервер после получения запроса от клиента просматривает файл,
каждая строка которого содержит имя и адрес электронной почты абонента. Строки
файла, удовлетворяющие заданным критериям или, если список пустой, сообщение об
отсутствии абонентов, посылаются пользователю. Сообщение о результатах поиска
выводится в текстовой области.
Вариант 20
Создать Web-сервер, отправляющий обратно полученное сообщение по методу
TRACE. В программе Web-клиента в текстовом поле вводится посылаемое сообщение и,
при нажатии кнопки, запрос посылается на сервер. Принятое сообщение посылается
обратно клиенту и выводится в текстовой области. Пример запроса по методу TRACE:
TRACE * HTTP/1.0
Content-length: длина-сообщения-в-байтах
Пустая строка
Текст сообщения
Вариант 21
Создать систему управления поисковым сервером адресов электронной почты с
помощью клиентской программы. Клиент и сервер обмениваются данными на основе
сокетов протокола UDP. Клиент в текстовом поле задает имя добавляемого или
удаляемого абонента (для добавляемого абонента задается также адрес его электронной
почты). После нажатия кнопки операции добавления или удаления запрос
Delete:имя-раздела или Add:имя-раздела
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 20 Прикладное программирование в ТС
Лабораторная работа 3-08
передается серверу. Полученный ответ – результат выполнения операции или сообщение
об отсутствии абонента (при операции удаления) выводится в текстовой области.
Поисковый сервер после получения запроса от клиента просматривает файл,
каждая строка которого содержит имя и адрес электронной почты абонента. Если для
операции удаления абонент найден, строка удаляется из файла (с использованием
временного файла), иначе посылается сообщение об ошибке. Если для операции
добавления абонент не найден, его имя и адрес электронной почты добавляются в конец
файла, иначе посылается сообщение об ошибке. В случае успешного выполнения
операции сообщение о выполненной операции посылается пользователю. Сообщение о
результатах поиска выводится в текстовой области.
Вариант 22
Создать файловый сервер и файловый клиент для приема файлов. Клиент и сервер
взаимодействуют между собой с использованием сокетов TCP. Файловый клиент при
подключении задает в текстовом поле свое имя и получает оглавление файлов в каталоге
сервера (оглавление выводится в текстовой области). Для получения файла пользователь
набирает имя файла в текстовом поле и, при нажатии кнопки, выполняется прием файла и
сохранение его в текущем каталоге.
Файловый сервер при запуске формирует оглавление текущего каталога и, при
подключении пользователя, посылает ему это оглавление. При получении заявки на
передачу файла от пользователя сервер передает ему заявленный файл, либо сообщении
об отсутствии такого файла на сервере. Имена подключаемых пользователей и сообщения
об отправленных им файлах выводится в текстовой области.
Вариант 23
Создать Web-клиент, записывающий принятый файл в текущий каталог. После
этого файл просматривается и на все ссылки, содержащиеся в атрибутах code, src и
href, формируются запросы, результаты выполнения которых также записываются в
текущий каталог.
Вариант 24
Создать сервер новостей и клиент для управления размещением новостей на
сервере. Клиент и сервер взаимодействуют между собой с использованием сокетов TCP.
Клиент новостей при подключении задает в текстовом поле свое имя и получает список
разделов новостей в каталоге сервера (оглавление выводится в текстовой области).
Клиент может добавлять, удалять или переименовывать разделы новостей, вводя в
текстовом поле имя раздела и нажимая кнопку соответствующей операции (для
переименования раздела вводится также новое имя раздела). Клиент отправляет на сервер
одно из следующих сообщений:
Rename:имя-раздела New:новое-имя
Delete:имя-раздела
Add:имя-раздела
Сервер новостей при запуске формирует оглавление текущего каталога и, при
подключении пользователя, посылает ему это оглавление. Имя каждого файла совпадает с
разделом новостей. Файл раздела содержит новости, каждая из которых имеет
следующий формат:
N:номер-новости Subject:тема
текст новости
При приеме сообщения от пользователя сервер выполняет соответствующую
операцию с файлом каталога, используя методы класса File, либо сообщает
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 21 Прикладное программирование в ТС
Лабораторная работа 3-08
пользователю об отсутствии раздела с заданным именем, а затем снова посылает
оглавление текущего каталога. Имена подключаемых пользователей и сообщения о
выполненных операциях выводится в текстовой области.
Вариант 25
Создать Web-сервер, отправляющий обратно произвольное сообщение о своих
характеристиках по методу OPTIONS. В программе Web-клиента при нажатии кнопки,
запрос посылается на сервер. Сообщение посылается клиенту и выводится в текстовой
области. Пример запроса по методу OPTIONS:
OPTIONS * HTTP/1.0
Вариант 26
Создать поисковый сервер адресов электронной почты и клиент на основе сокетов
протокола UDP. Клиент в текстовом поле задает имя абонента. После нажатия кнопки
запрос передается серверу. Полученный ответ – адрес электронной почты абонента или
сообщение об отсутствии абонента выводится в текстовой области.
Поисковый сервер после получения запроса от клиента просматривает файл,
каждая строка которого содержит имя и адрес электронной почты абонента. Адрес
электронной почты или сообщение об отсутствии указанного абонента посылаются
пользователю. Сообщение о результатах поиска выводится в текстовой области.
Вариант 27
Создать простой почтовый сервер и почтовый клиент, взаимодействующие между
собой с использованием сокетов TCP. Почтовый клиент при подключении задает в
текстовом поле свое имя и, если на сервере есть сообщения на это имя, получает их
(сообщения выводятся в текстовой области). Если клиент хочет отправить сообщение, он
вводит имя адресата в текстовом поле и, в текстовой области, текст сообщения. При
нажатии кнопки сообщение посылается почтовому серверу в следующем формате:
From:имя-отправителя
To:имя-получателя
текст-сообщения
Почтовый сервер сохраняет полученные сообщения в файле, а затем, при
подключении пользователя-адресата, передает ему это сообщение и удаляет его из файла.
Имена подключаемых пользователей и сообщения об отправке им почты выводится в
текстовой области.
Вариант 28
Создать Web-сервер, моделирующий proxy-сервер. Запросы от Web-браузера
(например, Internet Explorer) преобразуются в запросы Web-серверу (например, IIS). Webсервер выводит в текстовом поле временную отметку и имя запрашиваемого файла, а
затем перенаправляет запрос другому Web-серверу. Полученный ответ перенаправляется
Web-браузеру.
Вариант 29
Создать простой файловый сервер и файловый клиент для просмотра оглавления
каталогов на сервере. Клиент и сервер взаимодействуют между собой с использованием
сокетов TCP. Файловый клиент при подключении задает в текстовом поле свое имя и
получает оглавления корневых каталогов жестких дисков сервера (оглавление выводится
в текстовой области). Указывая наименования каталога или путь к каталогу в текстовой
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 22 Прикладное программирование в ТС
Лабораторная работа 3-08
области, пользователь получает оглавление этого каталога в текстовой области и
абсолютный путь к нему (в текстовом поле).
Файловый сервер при запуске формирует оглавление корневых каталогов жестких
дисков (с помощью методов listRoots(), getName(), getAbsolutePath(),
listFiles(), isDirectory() и isFile() класса File), а затем, при подключении
пользователя, посылает ему это оглавление. При приеме сообщения от пользователя
сервер посылает пользователю оглавление указанного каталога, либо сообщает
пользователю об отсутствии каталога с заданным именем. Имена подключаемых
пользователей и сообщения о выполненных операциях выводится в текстовой области.
Вариант 30
Создать Web-сервер, удаляющий файл в текущем каталоге по методу DELETE. В
программе Web-клиента в текстовом поле вводится имя удаляемого файла и, при нажатии
кнопки, запрос посылается на сервер. Сообщение об удалении или отсутствии файла
посылается клиенту и выводится в текстовой области. Пример запроса по методу DELETE:
DELETE old.html HTTP/1.0
5. СОДЕРЖАНИЕ ОТЧЕТА
В отчете должны быть представлены тексты программ, а также результаты
выполнения программ.
6. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
1. Какие основные для работы в Internet определены в Java и в каком пакете они
содержатся?
2. Какие виды адресов содержит объект класса InetAddress? С помощью
какого метода можно получить объект класса InetAddress?
3. Как определяется объект URL для доступа к ресурсам Internet? Какие
компоненты содержит этот объект? Какие методы используются для получения и
установки компонентов URL?
4. Какие можно получить данные из сети при использовании методов класса URL?
5. Как выполняется обмен данными в сети с использованием методов класса
URLConnection?
6. Как можно получить значения полей заголовков при обмене данными?
7. Какие дополнительные возможности по сравнению с классом URLConnection
предоставляет класс HttpURLConnection?
8. В каких случаях используется и как выполняется перекодирование данных с
помощью классов URLEncoder и URLDecoder?
9. Что такое сокет? Как используются сокеты при работе по протоколу TCP?
Какие данные необходимы для создания сокета TCP?
10. Какие используются классы Socket и ServerSocket для обеспечения
обмена данными по протоколу TCP? Какие характеристики соединения можно получить с
помощью методов этих классов?
11. Как в классах Socket и ServerSocket выполняется ввод и вывод данных?
12. Как выполняется обмен данными с помощью протокола UDP? Как формируется
отсылаемый и принимаемый пакеты данных?
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
- 23 Прикладное программирование в ТС
Лабораторная работа 3-08
13. Какие характеристики обмена можно получить с помощью методов класса
DatagramPacket?
14. Какие методы класса DatagramSocket обеспечивают отправку и получение
дейтаграмм?
15. Какие характеристики обмена можно получить с помощью методов класса
DatagramSocket?
Файл: Document1 Создан: 09.09.2015 Модифицирован: 17.01.2016
Автор: Шонин В.А.
Download