Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java12.pptx
Скачиваний:
132
Добавлен:
16.04.2015
Размер:
137.31 Кб
Скачать

JAVA-ТЕХНОЛОГИЯ

Сафонов Владимир Олегович

Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)

Email: vosafonov@gmail.com

Лекция 12

Сетевое программирование на Java (java.net)

Возможности Java для работы в сети:

Базовые средства создания Internet-приложений (java.net) : поддержка TCP/IP- и UDP-протоколов, сокетов (sockets), IP-

multicast соединений; http, ftp, email и более “старых” протоколов Internet: whois, finger, gopher (Internet шире, чем WWW)

Java позволяет создать приложение всего из нескольких строк для работы в Internet, без каких-либо специальных настроек, имея лишь JDK и компьютер, подключаемый к Internet через модем (dial-up connection)

Средства создания апплетов (java.applet) – клиентских приложений, “проигрываемых” с помощью браузеров

Средства создания сервлетов (javax.servlet) – серверных приложений для разработки Web-серверов

Средства поддержки распределенного программирования в стандарте CORBA (Common Object Request Broker Architecture)

– org.omg.CORBA, javax.rmi, javax.rmi.CORBA

Java – универсальный язык сетевого программирования

(C) В.О. Сафонов. 2013

Уровни сетевых протоколов

(C) В.О. Сафонов. 2013

IP-адрес (InetAddress)

IP-адрес хоста (host) – компьютера в сети Internet – имеет вид: N1.N2.N3.N4, где все четыре числа – в диапазоне от 0 до 255

java.net поддерживает понятие IP-адреса классом InetAddress. Его основные возможности (конструкторов нет, вместо них –

factory methods) :

-InetAddress.getLocalHost() – выдает IP-адрес локальной машины

-InetAddress.getByName(String hostName) – определяет IP- адрес хоста по его доменному имени, например, www.spbu.ru

-InetAddress.getAllByName(String hostname) – выдает массив всех IP-адресов хоста

(все три static-метода могут бросать UnknownHostException)

- addr.isMulticastAddress() – логическое свойство: “является IP multicast – адресом”

- addr.toString() – преобразование в строку

(C) В.О. Сафонов. 2013

Пример использования

InetAddress: локальный и удаленный IP-адрес

import java.net.*;

public class JavaNetTest {

public static void main(String[] args)

{

InetAddress addr; try {

addr = InetAddress.getLocalHost(); System.out.println(addr);

addr = InetAddress.getByName("www.spbu.ru"); System.out.println(addr);

} catch (Exception e) { System.err.println("JavaNetTest: exception:" + e);

}

}// main

}// JavaNetTest

(C) В.О. Сафонов. 2013

URL-адрес и обращение по URL (URLConnection)

Класс URL – представление Web-ссылки в java.net:

URL url = new URL(urlString); - конструктор класса URL; может бросать MalformedURLException при неверной urlString

Класс URLConnection позволяет установить связь с URL, считывать его свойства (например, content-type), определяемые спецификацией http- протокола, и открывать входной поток для чтения содержимого HTML- документа в текстовой форме и (если позволяет протокол) выходной поток для передачи командной строки Web-серверу по URL-адресу:

-getContentType() – тип содержимого (в виде строки)

-getContentEncoding() – кодировка (в виде строки) и т.д.;

-getHeaderField(int n) , getHeaderField(String s) – выбор значения поля заголовка по его номеру или имени (в виде строки)

-FileInputStream in = urlConnection.getInputStream(); – открытие входного потока; аналогично – getOutputStream()

-чтение из входного потока (java.io) :

int c = in.read(); // c == -1 => конец входного потока (char) c - текущий символ, прочтенный из потока

(C) В.О. Сафонов. 2013

Структура URL

(C) В.О. Сафонов. 2013

Пример: Разбор URL

(из Java Tutorial)

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

public class ParseURL {

public static void main(String[] args) throws Exception

{ URL aURL = new URL("http://java.sun.com:80/docs/books/" + "tutorial/index.html#DOWNLOADING");

System.out.println("protocol = " + aURL.getProtocol()); System.out.println("host = " + aURL.getHost()); System.out.println("filename = " + aURL.getFile()); System.out.println("port = " + aURL.getPort()); System.out.println("ref = " + aURL.getRef());

}

}

Вывод программы: protocol = http

host = java.sun.com

filename = /docs/books/tutorial/index.html

port = 80

(C) В.О. Сафонов.

ref = DOWNLOADING

2013

Пример URL-коннекции:

чтение свойств и текста HTML ( 1 / 2)

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

public class URLConnectionTest {

public static void main(String[] args)

{

int c; URL url; try {

url = new URL("http://www.spbu.ru");

System.out.println("URL: " + url);

URLConnection connection = url.openConnection();

System.out.println("Сonnection with host:“ + url.getHost());

System.out.println("Content type: " + connection.getContentType());

(C) В.О. Сафонов. 2013

Пример URL-коннекции ( 2 / 2)

int len = connection.getContentLength(); System.out.println("Content length= " + len); InputStream in = connection.getInputStream(); while ((c = in.read()) != -1) {

System.out.print((char) c);

}

in.close();

} catch (Exception e) {

System.err.println("URLConnectionTest: exception occurred: " + e);

}

}// main

}// URLConnectionTest

(C) В.О. Сафонов. 2013

Соседние файлы в папке java1_2013_2014