Занятие 17 Работа в сети
Цели n n n Объяснить, что такое апплеты и URLы Объяснить, что такое сокеты Объяснить, что такое каналы Рассмотреть пакет java. net Описать обмен информацией Апплет-Апплет Java Simplified / Session 34 / 2 of 42
Введение n n Обмен информацией играет важную роль в жизни каждого. Компьютеры являются наилучшими средствами обмена информацией в глобальном масштабе. Компьютеры в сети Internet обмениваются информацией с использованием протоколов Transmission Control Protocol (TCP)/Internet Protocol (IP). IP-адрес отличает один компьютер в сети от другого. n n Пример IP-адреса: 205. 20. 167. 177 В пределах одной системы программы обмениваются информацией друг с другом, используя порты (Ports). Порты обеспечивают обмен информацией между программами. Transmission Control Protocol (TCP) и User Datagram Protocol (UDP) являются двумя сетевыми протоколами. Java Simplified / Session 34 / 3 of 42
Сетевая среда и глобальная сеть Интернет n n Сетевая среда (Networking) – это концепция соединения двух (и более) машин. В глобальной сети Интернет многочисленные компьютеры используют разнообразные протоколы для обмена информацией друг с другом.
Протоколы n n n Протоколы помогают передавать информацию от одного компьютера к другому. Компьютеры передают информацию другу путём обмена пакетами данных Internet Protocol (IP) является сетевым протоколом, используемым для пересылки информации с одного компьютера на другой по сети Интернет.
Протоколы (продолжение) n n Порты делают возможным обмен информацией между компьютерами и программами. Предопределённые, используемые повсеместно номера портов: № порта Протокол Описание 21 FTP File Transfer Protocol – Протокол передачи файлов 23 TELNET Remote Login – Удалённый вход в систему 25 SMTP Simple Mail Transfer Protocol – Простой протокол передачи почты
TCP и UDP n n Транспортные протоколы обеспечивают обмен данными между прикладными программами. Протокол TCP устанавливает связь между IP‑адресами с заданными портами источника и приёмника.
TCP и UDP (продолжение) n n n UDP является протоколом без установления соединения при передаче данных, так как не устанавливает связь при передаче данных. При использовании UDP порт приёмника и IP-адрес записываются в дейтаграмму, и эта дейтаграмма посылается приёмнику Протокол UDP менее надёжен, чем протокол TCP, поскольку не гарантирует доставку дейтаграммы по адресу приёмника.
Обработка данных Клиент–Сервер n n по схеме Глобальная сеть Интернет предоставляет большое разнообразие сервисов; эти сервисы организованы в соответствии с архитектурой Клиент–Сервер. Клиентские программы, например, браузеры, создают соединения с программами‑серверами, такими как Web‑серверы или FTP‑серверы.
Обработка данных по схеме Клиент–Сервер (продолжение) n n Клиент выполняет запрос к серверу, а сервер предоставляет запрошенный сервис клиенту. Клиенты ведут обмен информацией через клиентские сокеты, а серверы – через серверные сокеты.
Пакет java. net n n Пакет java. net предоставляет классы, которые поддерживают основанный на сокетах обмен информацией по схеме Клиент–Сервер. Пакет java. net состоит из следующих классов: n n n Inet. Address Socket Server. Socket Datagram. Packet
Класс Inet. Address n n n Этот класс помогает находить адреса в сети Интернет. Нужно всего лишь задать имя, чтобы получить соответствующий адрес. Он поддерживает как числовые IP‑адреса, так и символьные имена хостов.
Internet. Address n n n Класс Inet. Address используется для инкапсуляции как IP-адреса, так и доменного имени для этого адреса. Inet. Address не имеет конструкторов, и для создания объекта этого класса необходимо использовать методы «фабрики» (factory). Три метода get. Local. Host(), get. By. Name() и get. All. By. Name() могут использоваться для создания экземпляров класса Inet. Address. Java Simplified / Session 34 / 13 of 42
Пример import java. net. *; class Inet. Address. Demo { public static void main(String [] args) { try { if(args. length > 0) { String host = args[0]; Inet. Address [] address = Inet. Address. get. All. By. Name(host); for(int i = 0; i < address. length; i++) System. out. println(address[i]); } else { Inet. Address localaddress = Inet. Address. get. Local. Host(); System. out. println(localaddress); } } catch(Exception e) { e. print. Stack. Trace(); } } } Вывод Java Simplified / Session 34 / 14 of 42
Использование URLов с апплетами Internet состоит из множества сетей Ресурс 5 Ресурс 4 Ресурс 3 Ресурс 1 Uniform Resource Locator (URL) Ресурс 2 Эти сети предоставляют разнообразные ресурсы Клиент Java-апплеты помогают при подключении к различным web-сайтам Сервер Java Simplified / Session 34 / 15 of 42
Использование URLов с апплетами n n Используя Java-апплеты, можно устанавливать соединения с различными Web-сайтами и просматривать их или получать доступ к информации. Каждому Web-сайту соответствует URL. Пакет java. net содержит ряд классов, которые выполняют реализацию соединения браузер-сервер. URL состоит из двух основных компонентов: n n n Protocol Identifier (Идентификатор протокола) – идентифицирует используемый протокол – http, ftp и т. д. Resource name (Имя ресурса) – Полный адрес ресурса. Идентификатор протокола и имя ресурса разделены двоеточиями и двумя слэшами. Java Simplified / Session 34 / 16 of 42
Пример import java. awt. *; public void action. Performed(Action. Event e) import java. awt. event. *; { import java. net. *; if(e. get. Source(). equals(b)) import java. applet. *; { public class Url. Window extends Applet implements Action. Listener get. Applet. Context(). show. Document(url, "index. html"); { } Button b; } URL url; } public void init() { url = null; try { url = new URL("http: //java. sun. com/products/archive/j 2 se/1. 4. 2_06"); } catch (Malformed. URLException e) { System. out. println("Malformed URL Exception Thrown"); } b = new Button ("Click me!"); add(b); b. add. Action. Listener(this); } Вывод Java Simplified / Session 34 / 17 of 42
Пример Некоторые методы класса URL используются в этом примере. import java. net. *; class Gotest { public static void main(String [] args) throws Malformed. URLException { URL hp = new URL("http: //www. go. com/Politics/index. html"); System. out. println("Protocol : " + hp. get. Protocol()); System. out. println("Port : " + hp. get. Port()); System. out. println("Host : " + hp. get. Host()); System. out. println("File : " + hp. get. File()); } } Вывод Java Simplified / Session 34 / 18 of 42
Сокеты n n n Каждый человек, который имеет телефон, подключённый к телефонной системе, получает уникальный номер своего телефона. TCP-сервис соединяет отправителя и получателя в сети Internet, используя сокеты. Сокет (Socket) – это ссылка на канал обмена информацией между приложениями в сетевой среде. Сокеты поддерживают передачу сообщений по сети с протоколами TCP/IP, следовательно, упрощают разработку специализированных приложений типа клиент/сервер. Существуют два типа сокетов: n n поддерживающие TCP (Transfer Control Protocol)-пакеты поддерживающие дейтаграммы UDP (User Datagram Protocol) Java Simplified / Session 34 / 19 of 42
Сокеты n Сокет – это комбинация IP-адреса и порта. Сокет адрес надает возможность другим компьютерам в сети находить определенную программу, которая исполняется на определенном компьютере. Вы можете отображать сокет адрес вот так 64. 104. 137. 58: 80, где 64. 104. 137. 58 – IP-адрес и 80 – порт. Java Simplified / Session 34 / 20 of 42
Программирование сокетов в Java n n Сокеты часто используются в приложениях типа клиент/сервер на языке Java предоставляет следующие классы для программирования сокетов: n n n java. net. Socket java. net. Server. Socket Класс Socket главным образом используется для двунаправленного обмена информацией через сокеты Java Simplified / Session 34 / 21 of 42
Класс Socket n n Java‑программы используют сокеты для подключения к сети. Класс Socket помогает установить клиентское соединение и разрабатывать приложения, функционирующие между клиентом и сервером.
Класс Server. Socket n n n Класс Server. Socket реализует серверный сокет протокола TCP. Метод accept() используется для включения серверного сокета в режим прослушивания и ожидания того момента, когда будет установлено входящее соединение. Метод get. Inet. Address() возвращает адрес хоста, с которым установлено соединение сокета.
Класс Datagram. Socket n n Этот класс использует протокол передачи дейтаграмм пользователя User Datagram Protocol (UDP) для реализации клиентских и серверных сокетов. UDP является протоколом обмена данными без установления соединения, который использует дейтаграммы для организации обмена информацией между клиентскими и серверными прикладными программами. Дейтаграммы – это небольшие фрагменты данных. Для отправки и приёма дейтаграмм используются методы send( ) и receive( ) соответственно.
Класс Datagram. Packet n n Этот класс использует объекты класса Datagram. Socket для инкапсуляции посылаемых и принимаемых дейтаграмм. В этом классе имеются два конструктора: один для дейтаграмм, принимаемых из UDP‑сокета, а другой для создания дейтаграмм, посылаемых через UDP‑сокет.
Конструкторы класса Socket Некоторые конструкторы класса Socket: Метод Описание public Socket (String host, int port)throws Unknown. Host. Exception, IOException Позволяет создать сокет, задавая доменное имя удалённой системы в форме строки (String) и номер порта в форме целого числа (int). public Socket (Inet. Address address, int port)throws IOException Позволяет создать сокет, задавая IP-адрес удалённой системы и номер порта. Java Simplified / Session 34 / 26 of 42
Конструкторы класса Socket (продолжение) Метод Описание public Socket (String host, int Создаёт сокет, задавая локальный port, Inet. Address localaddr, int интерфейс, локальный порт, IP-адрес local. Port)throws IOException удалённой системы и номер удалённого порта. public Socket (Inet. Address addr, int localport, boolean b )throws IOException Создаёт сокет, задавая IP-адрес удалённой системы и локальный порт. Если логический (boolean) аргумент b имеет значение true, то создаётся потоковый (stream) сокет (TCPсокет), иначе создаётся сокет дейтаграммы (UDP-сокет). Java Simplified / Session 34 / 27 of 42
Конструкторы класса Server. Socket Некоторые конструкторы класса Server. Socket: Метод Описание public Server. Socket (int port)throws IOException Создаёт прослушивающий (listening) сокет на заданном порте. По умолчанию допустимое количество ожидающих клиентов устанавливается равным 50. public Server. Socket (int port, int count)throws IOException Увеличивает или уменьшает количество ожидающих клиентов. public Server. Socket (int port, int count, Inet. Addr localaddr)throws IOException Увеличивает или уменьшает количество ожидающих клиентов, а также задаёт локальный интерфейс для прослушивания в ожидании запросов на соединения. / Session 34 / 28 of 42 Java Simplified
Пример (Our. Socket) import java. net. *; import java. io. *; public void close()throws IOException public class Our. Socket { { socket. close(); Socket socket; } Buffered. Reader the. Reader; public String read. Line()throws IOException Print. Writer the. Writer; { public Our. Socket(String host, int port)throws Unknown. Host. Exception, IOException return the. Reader. read. Line(); { } this(new Socket(host, port)); public void println(String s)throws IOException } { public Our. Socket(Socket s)throws Unknown. Host. Exception, the. Writer. println(s); IOException } { } socket = s; the. Reader = new Buffered. Reader( new Input. Stream. Reader(socket. get. Input. Stream())); the. Writer = new Print. Writer( socket. get. Output. Stream(), true); } public Socket get. Socket() { return socket; } 1 Java Simplified / Session 34 / 29 of 42
Сторона сервера Пример (Server. Window) import java. net. *; import java. io. *; in. close(); import java. util. *; public class Server. Window in = new Buffered. Reader(new Input. Stream. Reader(new File. Input. Stream("night. txt"))); { while ((line = in. read. Line()) != null) public static final int PORT = 1234; { Server. Socket sst; night. add. Element(line); Our. Socket os; } Vector morning = new Vector(); Vector night = new Vector(); in. close(); public static void main(String [] args) { sst = new Server. Socket(PORT); new Server. Window(). init(); while(true) } { public void init() System. err. println("Here's the Server. . . ready and running. "); { os = new Our. Socket(sst. accept()); try String s = os. read. Line(); { System. out. println("Read " + s + " from client. "); Buffered. Reader in; String line; in = new Buffered. Reader(new Input. Stream. Reader(new File. Input. Stream("morning. txt"))); while ((line = in. read. Line()) != null) { morning. add. Element(line); } 1 Java Simplified / Session 34 / 30 of 42
Пример (продолжение) Сторона сервера (Socket. Window) if (s. equals. Ignore. Case("morning")) for(int i = 0; i < 3; i++) { { send(morning); int n = (int) (Math. random() * size); } os. println((String) v. element. At(n)); else if (s. equals. Ignore. Case("night")) } { } }send(night); } else { System. err. println("Invalid request: " + s); } os. close(); System. err. println("Finished processing !!"); } } catch(Exception ex) { ex. print. Stack. Trace(); } } public void send(Vector v) throws IOException { int size = v. size(); 2 Output Java Simplified / Session 34 / 31 of 42
Сторона клиента Пример (Client. Window) public void fatal. Error(Exception ex) import java. applet. *; { import java. awt. *; import java. awt. event. *; ex. print. Stack. Trace(); import java. net. *; try { import java. io. *; os. close(); //<applet code=Client. Window width=300 height=300></applet> public class Client. Window extends Applet implements Action. Listener } { catch (Exception ex 1) { Button morning. Button = new Button("Morning"); Button night. Button = new Button("Night"); ; Text. Area message = new Text. Area(5, 20); } Our. Socket os; } public void init() public void action. Performed(Action. Event e) { { if(e. get. Source() == morning. Button) set. Layout(new Border. Layout()); { Panel p = new Panel(); try add(p, Border. Layout. NORTH); { add(message, Border. Layout. SOUTH); message. set. Text(""); p. set. Layout(new Grid. Layout(1, 0)); os = new Our. Socket(get. Code. Base(). get. Host(), 1234); p. add(morning. Button); os. println("Morning"); p. add(night. Button); message. append(os. read. Line() + "n"); message. set. Editable(false); message. append(os. read. Line() + "n"); morning. Button. add. Action. Listener(this); message. append(os. read. Line() + "n"); night. Button. add. Action. Listener(this); } os. close(); } 1 Java Simplified / Session 34 / 32 of 42
Пример (продолжение) Сторона клиента (Client. Window) catch (Exception ex) { fatal. Error(ex); } } else { try { message. set. Text(""); os = new Our. Socket(get. Code. Base(). get. Host(), 1234); os. println("Night"); message. append(os. read. Line() + "n"); os. close(); } catch (Exception ex) { fatal. Error(ex); } } Вывод 2 Java Simplified / Session 34 / 33 of 42
Пакеты дейтаграмм (UDP) n n n Приложения, использующие дейтаграммы, обмениваются информацией, посылая и принимая независимые друг от друга пакеты информации. Клиентам и серверам не требуются постоянные соединения типа «точка-точка» (point–to–point). Доставка пакетов не гарантируется, и порядок доставки не обеспечивается. Java Simplified / Session 34 / 34 of 42
Пример (Message. Server) import java. io. *; public class Message. Server { public static void main(String[] args)throws IOException { new Message. Server. Thread(). start(); } } Вывод Java Simplified / Session 34 / 35 of 42
Пример (Message. Server. Thread) 1 Сторона сервера import java. io. *; public void run() import java. net. *; { import java. util. * ; while(more. Quotes) public class Message. Server. Thread extends Thread { { try protected Datagram. Socket socket = null; { protected Buffered. Reader in = null; byte[] buf = new byte[256]; protected boolean more. Quotes = true; // receive request into the byte array public Message. Server. Thread() throws IOException Datagram. Packet packet = new Datagram. Packet(buf, buf. length); { socket. receive(packet); this("Message. Server. Thread"); } // figure out response public Message. Server. Thread(String name) throws IOException String d. String = null; { if (in == null) super(name); d. String = "No more Quotes"; socket = new Datagram. Socket(4445); else try d. String = get. Next. Quote(); { buf = d. String. get. Bytes(); in = new Buffered. Reader(new File. Reader("message. txt")); } // sends the response to the client at catch (File. Not. Found. Exception e) // "address" and "port", when the request came { // the address and the port is also attached System. err. println("Could not open quote file. "); Inet. Address address = packet. get. Address(); } } int port = packet. get. Port(); Java Simplified / Session 34 / 36 of 42
Пример (продолжение) packet = new Datagram. Packet(buf, buf. length, address, port); socket. send(packet); 2 Сторона сервера } catch (IOException e) { { e. print. Stack. Trace(); more. Quotes = false; return. Value = "IOException occurred in server. "; } return. Value; } } } socket. close(); } protected String get. Next. Quote() { String return. Value = null; try { if ((return. Value = in. read. Line()) == null) { in. close(); more. Quotes = false; return. Value = "No more quotes. Goodbye. "; } } Java Simplified / Session 34 / 37 of 42
Пример (Message. Client) Вывод // send request byte[] buf = new byte[256]; Inet. Address address = Inet. Address. get. By. Name(args[0]); Datagram. Packet packet = new Datagram. Packet(buf, buf. length, address, 4445); socket. send(packet); // get response packet = new Datagram. Packet(buf, buf. length); socket. receive(packet); Сторона клиента import java. io. *; import java. net. *; // display response public class Message. Client received = new String(packet. get. Data()); { if(received. trim(). equals("No more quotes. Goodbye. ")) public static void main(String[] args)throws IOException System. out. println("No more quotes. Goodbye. "); { else if(args. length != 1) System. out. println("Quote of the Moment: " + received. trim()); { System. out. println("Use: java Message. Client <hostname>"); socket. close(); return; } } } String received; // get a datagram socket Datagram. Socket socket = new Datagram. Socket(); Java Simplified / Session 34 / 38 of 42
Каналы сокетов n n Каналы сокетов отличаются от файловых каналов. Имеются три класса каналов сокетов, (Datagram Channel, Socket Channel, Server. Socket Channel), являющихся расширениями класса Abstract. Selectable. Channel n n Все каналы сокетов создают объект «пара сокетов» (peer socket) при создании экземпляра класса. Каналы сокетов могут работать в неблокирующем режиме. Java Simplified / Session 34 / 39 of 42
Server. Socket. Channel n n n Класс Server. Socket. Channel – это прослушивающий сокет на основе канала. Server. Socket. Channel создаётся с помощью метода open(), который возвращает канал, ассоциированный с несвязванным объектом java. net. Server. Socket. Так как Server. Socket. Channel не имеет метода bind(), необходимо получить пару сокетов, использовать её для привязки к порту и начать прослушивание в ожидании запросов на соединение. Синтаксис: Server. Socket. Channel ssc = Server. Socket. Channel. open(); Server. Socket serversocket = ssc. socket(); Serversocket. bind( new Inet. Socket. Address(1234)); Java Simplified / Session 34 / 40 of 42
Пример (Channel. Accept) import java. nio. Byte. Buffer; while(true) import java. nio. channels. Server. Socket. Channel; { import java. nio. channels. Socket. Channel; System. out. println("Waiting for connections"); import java. net. Inet. Socket. Address; Socket. Channel sc = ssc. accept(); public class Channel. Accept if(sc == null) { { public static final String GREET = "Hello i am going and joining the Aptech Teamr n"; Thread. sleep (2000); public static void main(String [] args)throws Exception } { else int port = 1234; { if (args. length >0) System. out. println("Incoming connection: " + { sc. socket(). get. Remote. Socket. Address()); port = Integer. parse. Int (args [0]); buffer. rewind(); } sc. write(buffer); Byte. Buffer buffer = Byte. Buffer. wrap(GREET. get. Bytes()); sc. close(); Server. Socket. Channel ssc = Server. Socket. Channel. open(); } ssc. socket(). bind(new Inet. Socket. Address (port)); } ssc. configure. Blocking (false); } } Java Simplified / Session 34 / 41 of 42
Пример (продолжение) Вывод Java Simplified / Session 34 / 42 of 42
Канал сокета и канал дейтаграммы n n n Канал сокета работает, как клиент, инициализирующий соединение с прослушивающим сервером (listening server). Вызов метода socket() в Socket. Channel возвращает объект socket. Метод connect() помогает установить соединение с вновь созданным каналом сокета. Каждый объект Datagram. Channel имеет ассоциированный с ним объект Datagram. Socket. Datagram. Channel моделирует протоколы передачи пакето без установления соединения, такие как UDP / IP. Объект канал дейтаграммы (Datagram Channel) может работать и как сервер, и как клиент. Java Simplified / Session 34 / 43 of 42
Каналы Pipes n n Каналы Pipes находятся в пакете java. nio. channels Класс Pipe создаёт два объекта Channel, которые поддерживают механизм «обратной петли» (loop back). Преимуществом использования каналов Pipe является инкапсуляция. Кроме того, они могут использоваться для тестирования. Java Simplified / Session 34 / 44 of 42
Пример import java. nio. *; import java. nio. channels. *; import java. util. Random; class Read. Pipe. Demo { public static void main(String [] args)throws Exception { // creates a writable channel around standard output Writable. Byte. Channel out = Channels. new. Channel (System. out); // starts the work and gets a read end of the channel Readable. Byte. Channel in = startwork(10); Byte. Buffer buffer = Byte. Buffer. allocate(100); while(in. read(buffer) >= 0) { buffer. flip(); out. write (buffer); buffer. clear(); } } // this method returns a Socket Channel or a File Channel instance private static Readable. Byte. Channel startwork(int num)throws Exception { Pipe pipe = Pipe. open(); Working worker = new Working(pipe. sink(), num); worker. start(); Java Simplified / Session 34 / 45 of 42
Пример (продолжение) return(pipe. source()); for(int count =0; count < this. num; count++) } { // a working thread object will write the data down the channel dowork(buffer); private static class Working extends Thread while(channel. write(buffer) > 0) { {} private String [] message = { } "No good deeds go unpunished", "To be or not to be", this. channel. close(); "You too Brutus", } "My karma and mine only", catch(Exception e) }; { private Random rand = new Random(); e. print. Stack. Trace(); Writable. Byte. Channel channel; } }private int num; // creating a general Writable byte channel private void dowork( Byte. Buffer buffer) {Working(Writable. Byte. Channel ch, int num) {int number = rand. next. Int(message. length); this. channel = ch; buffer. clear(); this. num = num; buffer. put(message[number]. get. Bytes()); }buffer. put("rn ". get. Bytes()); // thread execution begins here buffer. flip(); public void run() } } { } Byte. Buffer buffer = Byte. Buffer. allocate(100); try { Вывод Java Simplified / Session 34 / 46 of 42
Обработчики протоколов n Обработчик (handler) –это код, написанный разработчиком для обработки особых ситуаций. n n n Обработчики протоколов (Protocol handlers) выполняют реализацию конкретных протоколов, необходимую для доступа к web-объектам. Специализированный протокол идентифицируется в URL следующим образом: n n n Пример – Обработчик исключений Пример: My. Protocol: //www. somesite. com Здесь не HTTP, а протокол My. Protocol используется для доступа к содержимому сайта www. somesite. com. Java поддерживает обработчики протоколов, известные как обработчики потоков (stream handlers). Метод open. Connection() класса URLStream. Handler должен быть замещён для предоставления специализированного обработчика протокола. Метод open. Connection() возвращает объект класса URLConnection, и этот объект используется для создания потоков ввода и вывода. Java Simplified / Session 34 / 47 of 42
Обмен информацией Апплет –Апплет n n n Мгновенный обмен информацией (Instant communication) – наиболее употребляемый термин в наши дни. Службы медицинской скорой помощи являются одним из примеров, когда мгновенный обмен информацией чрезвычайно важен для принятия решений. В Java апплет может послать сообщение в другой апплет через: n метод get. Applet. Context() класса Applet. n метод get. Applet() интерфейса Applet. Context. Java Simplified / Session 34 / 48 of 42
Пример (First. Applet) import java. awt. *; import java. applet. *; public class First. Applet extends Applet { Text. Area text; public void init() { text=new Text. Area(" "); add(text); } public void put. Text(String msg) { text. append(msg+"n"); } } Java Simplified / Session 34 / 49 of 42
Пример (Second. Applet) import java. awt. *; import java. applet. *; import java. awt. event. *; if(e. get. Source(). equals(submit)) public class Second. Applet extends Applet implements Action. Listener { { ma. put. Text(message. get. Text()); Text. Field message; message. set. Text(" "); Applet. Context App. Con; } } Button submit; } public void init() } { message = new Text. Field(50); add(message); submit = new Button("Submit"); add(submit); submit. add. Action. Listener (this); } public void action. Performed(Action. Event e) { App. Con = get. Applet. Context(); First. Applet ma = (First. Applet)App. Con. get. Applet("One"); if(ma!=null) { Java Simplified / Session 34 / 50 of 42
Пример (test. html) <html> <applet code=Second. Applet width=400 height=400 name="Two"> </applet> <applet code=First. Applet width=400 height=400 name="One"> </applet> </html> Java Simplified / Session 34 / 51 of 42
Пример (Вывод) Java Simplified / Session 34 / 52 of 42
Классы, ориентированные на работу в Web n n n При работе в глобальной сети Интернет и в World Wide Web мы должны создавать URLы и работать с ними. Пакет java. net также предлагает набор классов, которые поддерживают Web‑ориентированные приложения. Пакет java. net содержит следующие Web‑ориентированные классы: n n URLConnection URLEncoder Content. Handler
Класс URL n n n Аббревиатура URL расшифровывается, как Uniform Resource Locator (Унифицированный локатор ресурса). Он предоставляет универсальный способ определения местонахождения ресурсов в Web. Класс java. net. URL инкапсулирует объекты, относящиеся к Web.
Класс URLConnection n n Это абстрактный класс. Класс URLConnection инкапсулирует активные HTTP‑соединения в среде Web. Этот класс поддерживает несколько методов, позволяющих изменить параметры настройки по умолчанию, параметры настройки запросов и текущие настройки объекта URLConnection. Класс URLConnection используется для получения информации о Web‑объектах и о соединениях с Web‑объектами. Класс Http. URLConnection является производным (подклассом) класса URLConnection.
Класс URLEncoder n n n Этот класс преобразует текстовые строки в нужную форму, которая может быть использована, как составная часть URL. Класс предоставляет метод encode(), который преобразует пробелы, присутствующие в тексте, в знаки "плюс" (+). Он использует знак "процент" (%), как экранирующий символ для записи специальных символов (символьных последовательностей).
Класс Content. Handler n n n Класс Content. Handler обрабатывает и извлекает данные, которые имеют тип MIME (Multipurpose Internet Mail Extension) (многоцелевые расширения электронной почты в сети Internet). MIME включает различные типы объектов, как например, sound (звук), image (изображение), video (видео) и т. д. Класс Content. Handler предоставляет средства просмотра (viewers) для обработки MIME‑типов.
Подведение итогов n n n IP-адрес – это 32 -битовое число, записываемое в десятичном, 16 -ричном или любом другом формате, и используемое для дого, чтобы отличить одну систему от другой при обмене информацией между компьютерами. Транспортные протоколы используются для обеспечения передачи информации из одного порта в другой. TCP и UDP являются двумя такими протоколами. TCP более широко используется, чем UDP. Пакет java. net содержит набор классов, которые реализуют соединения браузер-сервер, наиболее простые в классе URL. Класс URL инкапсулирует Web-объекты в соответствии с их URL-адресами. Сокет (Socket) – это ссылка на канал обмена информацией между приложениями в сетевой среде. Java Simplified / Session 34 / 58 of 42
Подведение итогов (продолжение) n n Используя сокеты, можно посылать и принимать сообщения по сети, использующей протоколы TCP/IP Существуют два типа сокетов: n n n TCP (Transfer Control Protocol) or Internet Protocol (IP) sockets UDP (User Datagram Protocol) Java предоставляет следующие классы для программирования сокетов: java. net. Socket n java. net. Server. Socket Класс Server. Socket позволяет выполнить привязку к порту и n n n ожидать запросов на соединение от клиентов Java поддерживает обработчики протоколов, известные как обработчики потоков (stream handlers). Они реализуются, как подклассы класса URLStream. Handler Java Simplified / Session 34 / 59 of 42