Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 396

Ильдар Шаукатович Хабибуллин

private void sendMessage(String mes){ try{

byte[] data = mes.getBytes();

InetAddress addr = InetAddress.getByName(host);

DatagramPacket pack =

new DatagramPacket(data, data.length, addr, port); DatagramSocket ds = new DatagramSocket(); ds.send(pack); ds.close();

}catch(IOException e){

System.err.println(e);

}

}

public static void main(String[] args){

Sender sndr = new Sender("localhost", 1050); for (int k = 0; k < args.length; k++) sndr.sendMessage(args[k]);

}

}

Листинг 24.6. Прием дейтаграмм по протоколу UDP

import java.net.*; import java.io.*;

public class Recipient{

public static void main(String[] args){ try{

DatagramSocket ds = new DatagramSocket(1050); while (true){

DatagramPacket pack = new DatagramPacket(new byte[1024], 1024); ds.receive(pack);

System.out.println(new String(pack.getData()));

}

}catch(Exception e){

System.out.println(e);

}

}

}

Упражнение

5. Создайте аналог электронной почтовой связи с помощью дейтаграмм.

Вопросы для самопроверки

1. Что такое сетевая архитектура "клиент-сервер"?

2. Чем отличается клиентская часть приложения от серверной части?

3. Может ли клиентская часть приложения взаимодействовать сразу с несколькими серверами?

4. Что такое сетевой протокол?

5. Что такое стек протоколов?

6. Какие протоколы входят в стек протоколов TCP/IP?

7. Что такое IP-адрес?

8. Что такое номер порта?

9. Что такое дейтаграмма?

10. Что такое DNS-имя?

11. Что такое адрес URL?

12. Как установить связь через прокси-сервер?

ЧАСТЬ V Web-технологии Java

Глава 25. Web-инструменты Java
Глава 26. Сервлеты
Глава 27. Страницы JSP
Глава 28. Связь Java с технологией XML

ГЛАВА 25

Web-инструменты Java

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

Архиватор jar

Для упаковки нескольких файлов в один архивный файл, со сжатием или без сжатия, в технологии Java разработан формат архивирования JAR. Имя архивного jar-файла может быть любым, но обычно оно получает расширение jar. Способ упаковки и сжатия основан на методе ZIP. Название JAR (Java ARchive) перекликается с названием известной утилиты TAR (Tape ARchive), разработанной в UNIX.

Отличие jar-файлов от zip-файлов только в том, что в jar-файлы автоматически включается каталог META-INF, содержащий несколько файлов с информацией об упакованных в архив файлах.

Архивные файлы очень удобно использовать в апплетах, о чем уже говорилось в главе 18, поскольку весь архив загружается по сети сразу же, одним запросом. Все файлы апплета с байт-кодами, изображениями, звуковые файлы упаковываются в один или несколько архивов. Для их загрузки достаточно в теге <appiet> указать имена архивов в параметре archive, например:

<applet code = "MillAnim.class" archive = "first.jar, second.jar"

width = "100%" height = "100%"></applet>

Основной файл MillAnim.class должен находиться в каком-либо из архивных файлов firstjar или second.jar. Остальные файлы отыскиваются в архивных файлах, а если не найдены там, то на сервере, в том же каталоге, что и HTML-файл. Впрочем, файлы апплета можно упаковать не только в jar-архив, но и в zip-архив со сжатием или без сжатия.