New PrintStream(s.getOutputStream());



// помещение строки "привет!" в буфер

ps.println("привет!");

// отправка содержимого буфера клиенту и его очищение

Ps.flush();

ps.close();

} catch (IOException e) {

System. err. println("Ошибка: " + e);

} finally {

if (s!= null)

s.close(); // разрыв соединения }}}

/* пример # 6: получение клиентом строки: MyClientSocket.java */

Package chapt15;

import java.io.*;

import java.net.*;

public class MyClientSocket {

public static void main(String[] args) {

Socket socket = null;

try { // получение строки клиентом

socket = new Socket(" ИМЯ_СЕРВЕРА ", 8030);

/* здесь "ИМЯ_СЕРВЕРА" компьютер, на котором стоит сервер-сокет"*/

BufferedReader br =

New BufferedReader(

New InputStreamReader(

Socket.getInputStream()));

String msg = br.readLine();

System. out. println(msg);

Socket.close();

} catch (IOException e) {

System. err. println("ошибка: " + e); } } }

Аналогично клиент может послать данные серверу через поток вывода, полученный с помощью метода getOutputStream(), а сервер может получать данные через поток ввода, полученный с помощью метода getInputStream().

Если необходимо протестировать подобный пример на одном компьютере, можно выступать одновременно в роли клиента и сервера, используя статические методы getLocalHost() класса InetAddress для получения динамического IP-адреса компьютера, который выделяется при входе в сеть интернет.


14.Основы работы с сетью. Классы URL, URLConnection, HttpURLConnection.\

Класс URL

Предыдущий пример довольно-таки невразумителен, поскольку в настоящее время

в Internet не ассоциируется со старыми протоколами, такими как whois, finger и FTP.

Здесь царствует WWW — всемирная паутина (World Wide Web). Web — слабо связанная

коллекция высокоуровневых протоколов и форматов файлов, унифицированным обра-

зом используемых Web-браузерами. Как только вы можете однозначно именовать что-либо, это

становится очень мощной парадигмой. Именно это и делает унифицированный локатор

ресурсов (Uniform Resource Locator — URL).

URL обеспечивает довольно четкую форму уникальной идентификации адресной

информации в Web. Внутри библиотеки классов Java класс URL представляет простой

согласованный программный интерфейс для доступа к информации по всей сети Internet

посредством использования URL.

Все URL разделяют один и тот же базовый формат, хотя и допускающий некоторые

вариации. Приведем два примера: http://www.osborne.com/ и http://www.osborne.

com:80/index.htm. Спецификация URL основана на четырех компонентах. Первый —

используемый протокол, отделяемый от остальной части локатора двоеточием (:).

Распространенными протоколами являются HTTP, FTP, gopher и file, хотя в наши дни

почти все осуществляется через HTTP. Второй компонент — имя хоста или IP-адрес, используемый хостом; он отделяется слева двойным слэшем (//), а справа — слэшем (/) или, необязательно — двоеточием (:). Третий компонент — номер порта, является необязательным параметром, отделяемым слева от имени хоста двоеточием, а справа — слэшем (/) (Если 80 является портом по умолчанию для протокола HTTP, то указывать “:80” излишне.) Четвертая часть — действительный путь к файлу. Большинство серверов HTTP добавляют имя файла index.html или index.htm к

URL, которые указывают непосредственно на какой-то каталог. Таким образом, http://

www.osborne.com/ — это то же самое, что и http://www.osborne.com/index.htm.

Java-класс URL имеет несколько конструкторов; каждый из них может возбуждать ис-

ключение MalformedURLException. Одна из часто используемых форм специфицирует

URL в виде строки, идентичной тому, что вы видите в браузере:

URL(String urlSpecifier) throws MalformedURLException

URLConnection — это класс общего назначения, предназначенный для доступа к ат-

рибутам удаленного ресурса. Однажды установив соединение с удаленным сервером, вы

можете использовать URLConnection для просмотра свойств удаленного объекта, пре-

жде чем транспортировать его локально. Эти атрибуты представлены в спецификации

протокола HTTP и, как таковые, имеют смысл только для объектов URL, использующих

протокол HTTP. Обратите внимание, что URLConnection определяет несколько методов, управляю-

щих заголовочной информацией. Заголовок состоит из пар ключей и значений, представ-

ленных в виде строк. Используя getHeaderField(), вы можете получить значение, ассо-

циированное с ключом заголовка. Вызывая getHeaderField(), можно получить карту,

содержащую все заголовки. Несколько стандартных заголовочных полей доступны непо-

средственно через такие методы, как getDate() и getContentType().

HttpURLConnection

Java предлагает подкласс URLConnection, обеспечивающий поддержку соединений

HTTP. Этот класс называется HttpURLConnection. Вы получаете HttpURLConnection

точно так же, как было показано — вызовом openConnection() объекта URL, но ре-

зультат следует приводить к типу HttpURLConnection. (Конечно, необходимо убе-

диться в том, что вы действительно открыли соединение HTTP.) Получив ссылку на

объект HttpURLConnection, вы можете вызывать любые его методы, унаследованные

от URLConnection. Вы также можете использовать любые методы, определенные в

HttpURLConnection.


Дата добавления: 2015-12-17; просмотров: 15; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!