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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!