Презентация на тему: Занятие 17

Реклама. Продолжение ниже
Занятие 17
Цели
Введение
Сетевая среда и глобальная сеть Интернет
Протоколы
Протоколы ( продолжение )
TCP и UDP
TCP и UDP ( продолжение )
Обработка данных по схеме Клиент – Сервер
Обработка данных по схеме Клиент – Сервер ( продолжение )
Пакет java.net
Класс InetAddress
InternetAddress
Пример
Использование URL ов с апплетами
Использование URL ов с апплетами
Пример
Пример
Сокеты
Сокеты
Программирование сокетов в Java
Класс Socket
Класс ServerSocket
Класс DatagramSocket
Класс DatagramPacket
Конструкторы класса Socket
Конструкторы класса Socket (продолжение)
Конструкторы класса ServerSocket
Пример (OurSocket)
Пример (ServerWindow)
Пример (продолжение) (SocketWindow)
Пример (ClientWindow)
Пример (продолжение) (ClientWindow)
Пакеты дейтаграмм (UDP)
Пример (MessageServer)
Пример (MessageServerThread)
Пример (продолжение)
Пример (MessageClient)
Каналы сокетов
ServerSocketChannel
Пример (ChannelAccept)
Пример (продолжение)
Канал сокета и канал дейтаграммы
Каналы Pipes
Пример
Пример (продолжение)
Обработчики протоколов
Обмен информацией Апплет–Апплет
Занятие 17
Пример (SecondApplet)
Пример (test.html)
Пример ( Вывод )
Классы, ориентированные на работу в Web
Класс URL
Класс URLConnection
Класс URLEncoder
Класс ContentHandler
Подведение итогов
Подведение итогов (продолжение)
1/59
Средняя оценка: 4.7/5 (всего оценок: 90)
Код скопирован в буфер обмена
Скачать (429 Кб)
Реклама. Продолжение ниже
1

Первый слайд презентации: Занятие 17

Работа в сети

Изображение слайда
1/1
2

Слайд 2: Цели

Java Simplified / Session 34 / 2 of 42 Цели Объяснить, что такое апплеты и URL ы Объяснить, что такое сокеты Объяснить, что такое каналы Рассмотреть пакет java.net Описать обмен информацией Апплет-Апплет

Изображение слайда
1/1
3

Слайд 3: Введение

Java Simplified / Session 34 / 3 of 42 Введение Обмен информацией играет важную роль в жизни каждого. Компьютеры являются наилучшими средствами обмена информацией в глобальном масштабе. Компьютеры в сети Internet обмениваются информацией с использованием протоколов T ransmission C ontrol P rotocol (TCP)/ I nternet P rotocol (IP). IP -адрес отличает один компьютер в сети от другого. Пример IP -адреса : 205.20.167.177 В пределах одной системы программы обмениваются информацией друг с другом, используя порты ( Ports ). Порты обеспечивают обмен информацией между программами. T ransmission C ontrol P rotocol (TCP) и U ser D atagram P rotocol (UDP) являются двумя сетевыми протоколами.

Изображение слайда
1/1
4

Слайд 4: Сетевая среда и глобальная сеть Интернет

Сетевая среда ( Networking ) – это концепция соединения двух (и более) машин. В глобальной сети Интернет многочисленные компьютеры используют разнообразные протоколы для обмена информацией друг с другом.

Изображение слайда
Изображение для работы со слайдом
1/2
5

Слайд 5: Протоколы

Протоколы помогают передавать информацию от одного компьютера к другому. Компьютеры передают информацию друг другу путём обмена пакетами данных Internet Protocol (IP) является сетевым протоколом, используемым для пересылки информации с одного компьютера на другой по сети Интернет.

Изображение слайда
Изображение для работы со слайдом
1/2
6

Слайд 6: Протоколы ( продолжение )

Порты делают возможным обмен информацией между компьютерами и программами. Предопределённые, используемые повсеместно номера портов: № порта Протокол Описание 21 FTP File Transfer Protocol – Протокол передачи файлов 23 TELNET Remote Login – Удалённый вход в систему 25 SMTP Simple Mail Transfer Protocol – Простой протокол передачи почты

Изображение слайда
1/1
7

Слайд 7: TCP и UDP

Транспортные протоколы обеспечивают обмен данными между прикладными программами. Протокол TCP устанавливает связь между IP ‑адресами с заданными портами источника и приёмника.

Изображение слайда
Изображение для работы со слайдом
1/2
Реклама. Продолжение ниже
8

Слайд 8: TCP и UDP ( продолжение )

UDP является протоколом без установления соединения при передаче данных, так как не устанавливает связь при передаче данных. При использовании UDP порт приёмника и IP -адрес записываются в дейтаграмму, и эта дейтаграмма посылается приёмнику Протокол UDP менее надёжен, чем протокол TCP, поскольку не гарантирует доставку дейтаграммы по адресу приёмника.

Изображение слайда
1/1
9

Слайд 9: Обработка данных по схеме Клиент – Сервер

Глобальная сеть Интернет предоставляет большое разнообразие сервисов ; эти сервисы организованы в соответствии с архитектурой Клиент–Сервер. Клиентские программы, например, браузеры, создают соединения с программами‑серверами, такими как Web ‑серверы или FTP ‑серверы.

Изображение слайда
Изображение для работы со слайдом
1/2
10

Слайд 10: Обработка данных по схеме Клиент – Сервер ( продолжение )

Клиент выполняет запрос к серверу, а сервер предоставляет запрошенный сервис клиенту. Клиенты ведут обмен информацией через клиентские сокеты, а серверы – через серверные сокеты.

Изображение слайда
1/1
11

Слайд 11: Пакет java.net

Пакет java. net предоставляет классы, которые поддерживают основанный на сокетах обмен информацией по схеме Клиент–Сервер. Пакет java. net состоит из следующих классов: InetAddress Socket ServerSocket DatagramSocket DatagramPacket

Изображение слайда
1/1
12

Слайд 12: Класс InetAddress

Этот класс помогает находить адреса в сети Интернет. Нужно всего лишь задать имя, чтобы получить соответствующий адрес. Он поддерживает как числовые IP ‑адреса, так и символьные имена хостов.

Изображение слайда
1/1
13

Слайд 13: InternetAddress

Java Simplified / Session 34 / 13 of 42 InternetAddress Класс InetAddress используется для инкапсуляции как IP -адреса, так и доменного имени для этого адреса. InetAddress не имеет конструкторов, и для создания объекта этого класса необходимо использовать методы «фабрики» ( factory ). Три метода getLocalHost(), getByName() и getAllByName() могут использоваться для создания экземпляров класса InetAddress.

Изображение слайда
1/1
14

Слайд 14: Пример

Java Simplified / Session 34 / 14 of 42 Пример import java.net.*; class InetAddressDemo { public static void main(String [] args) { try { if(args.length > 0) { String host = args[0]; InetAddress [] address = InetAddress.getAllByName(host); for(int i = 0; i < address.length; i++) System.out.println(address[i]); } else { InetAddress localaddress = InetAddress.getLocalHost(); System.out.println(localaddress); } } catch(Exception e) { e.printStackTrace(); } } } Вывод

Изображение слайда
Изображение для работы со слайдом
1/2
Реклама. Продолжение ниже
15

Слайд 15: Использование URL ов с апплетами

Java Simplified / Session 34 / 15 of 42 Использование URL ов с апплетами Internet состоит из множества сетей Эти сети предоставляют разнообразные ресурсы Ресурс 1 Ресурс 2 Ресурс 3 Ресурс 4 Ресурс 5 Сервер Java -апплеты помогают при подключении к различным web -сайтам Клиент Uniform Resource Locator (URL)

Изображение слайда
Изображение для работы со слайдом
Изображение для работы со слайдом
1/3
16

Слайд 16: Использование URL ов с апплетами

Java Simplified / Session 34 / 16 of 42 Использование URL ов с апплетами Используя Java - апплеты, можно устанавливать соединения с различными Web - сайтами и просматривать их или получать доступ к информации. Каждому Web - сайту соответствует URL. Пакет java.net содержит ряд классов, которые выполняют реализацию соединения браузер-сервер. URL состоит из двух основных компонентов : Protocol Identifier ( Идентификатор протокола ) – идентифицирует используемый протокол – http, ftp и т.д. Resource name ( Имя ресурса ) – Полный адрес ресурса. Идентификатор протокола и имя ресурса разделены двоеточиями и двумя слэшами.

Изображение слайда
1/1
17

Слайд 17: Пример

Java Simplified / Session 34 / 17 of 42 Пример import java.awt.*; import java.awt.event.*; import java.net.*; import java.applet.*; public class UrlWindow extends Applet implements ActionListener { Button b; URL url; public void init() { url = null; try { url = new URL("http://java.sun.com/products/archive/j2se/1.4.2_06"); } catch (MalformedURLException e) { System.out.println("Malformed URL Exception Thrown"); } b = new Button ("Click me!"); add(b); b.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource().equals(b)) { getAppletContext().showDocument(url,"index.html"); } } } Вывод

Изображение слайда
Изображение для работы со слайдом
1/2
18

Слайд 18: Пример

Java Simplified / Session 34 / 18 of 42 Пример Некоторые методы класса URL используются в этом примере. import java.net.*; class Gotest { public static void main(String [] args) throws MalformedURLException { URL hp = new URL("http://www.go.com/Politics/index.html"); System.out.println("Protocol : " + hp.getProtocol()); System.out.println("Port : " + hp.getPort()); System.out.println("Host : " + hp.getHost()); System.out.println("File : " + hp.getFile()); } } Вывод

Изображение слайда
Изображение для работы со слайдом
1/2
19

Слайд 19: Сокеты

Java Simplified / Session 34 / 19 of 42 Сокеты Каждый человек, который имеет телефон, подключённый к телефонной системе, получает уникальный номер своего телефона. TCP -сервис соединяет отправителя и получателя в сети Internet, используя сокеты. Сокет ( Socket ) – это ссылка на канал обмена информацией между приложениями в сетевой среде. Сокеты поддерживают передачу сообщений по сети с протоколами TCP/IP, следовательно, упрощают разработку специализированных приложений типа клиент/сервер. Существуют два типа сокетов : поддерживающие TCP (Transfer Control Protocol) -пакеты поддерживающие дейтаграммы UDP (User Datagram Protocol)

Изображение слайда
1/1
20

Слайд 20: Сокеты

Сокет – это комбинация IP-адреса и порта. Сокет адрес надает возможность другим компьютерам в сети находить определенную программу, которая исполняется на определенном компьютере. Вы можете отображать сокет адрес вот так 64.104.137.58:80, где 64.104.137.58 – IP-адрес и 80 – порт. Java Simplified / Session 34 / 20 of 42

Изображение слайда
1/1
21

Слайд 21: Программирование сокетов в Java

Java Simplified / Session 34 / 21 of 42 Программирование сокетов в Java Сокеты часто используются в приложениях типа клиент/сервер на языке Java. Java предоставляет следующие классы для программирования сокетов : java.net.Socket java.net.ServerSocket Класс Socket главным образом используется для двунаправленного обмена информацией через сокеты

Изображение слайда
1/1
22

Слайд 22: Класс Socket

Java ‑программы используют сокеты для подключения к сети. Класс Socket помогает установить клиентское соединение и разрабатывать приложения, функционирующие между клиентом и сервером.

Изображение слайда
Изображение для работы со слайдом
1/2
23

Слайд 23: Класс ServerSocket

Класс ServerSocket реализует серверный сокет протокола TCP. Метод accept () используется для включения серверного сокета в режим прослушивания и ожидания того момента, когда будет установлено входящее соединение. Метод getInetAddress () возвращает адрес хоста, с которым установлено соединение сокета.

Изображение слайда
1/1
24

Слайд 24: Класс DatagramSocket

Этот класс использует протокол передачи дейтаграмм пользователя User Datagram Protocol ( UDP ) для реализации клиентских и серверных сокетов. UDP является протоколом обмена данными без установления соединения, который использует дейтаграммы для организации обмена информацией между клиентскими и серверными прикладными программами. Дейтаграммы – это небольшие фрагменты данных. Для отправки и приёма дейтаграмм используются методы send( ) и receive( ) соответственно.

Изображение слайда
1/1
25

Слайд 25: Класс DatagramPacket

Этот класс использует объекты класса DatagramSocket для инкапсуляции посылаемых и принимаемых дейтаграмм. В этом классе имеются два конструктора: один для дейтаграмм, принимаемых из UDP ‑сокета, а другой для создания дейтаграмм, посылаемых через UDP ‑сокет.

Изображение слайда
1/1
26

Слайд 26: Конструкторы класса Socket

Java Simplified / Session 34 / 26 of 42 Конструкторы класса Socket Некоторые конструкторы класса Socket: Метод Описание public Socket (String host, int port) throws UnknownHostException, IOException Позволяет создать сокет, задавая доменное имя удалённой системы в форме строки ( String ) и номер порта в форме целого числа ( int ). public Socket (InetAddress address, int port) throws IOException Позволяет создать сокет, задавая IP -адрес удалённой системы и номер порта.

Изображение слайда
1/1
27

Слайд 27: Конструкторы класса Socket (продолжение)

Java Simplified / Session 34 / 27 of 42 Конструкторы класса Socket (продолжение) Метод Описание public Socket (String host, int port, InetAddress localaddr, int localPort) throws IOException Создаёт сокет, задавая локальный интерфейс, локальный порт, IP -адрес удалённой системы и номер удалённого порта. public Socket (InetAddress addr, int localport, boolean b ) throws IOException Создаёт сокет, задавая IP -адрес удалённой системы и локальный порт. Если логический ( boolean ) аргумент b имеет значение true, то создаётся потоковый ( stream ) сокет (TCP -сокет), иначе создаётся сокет дейтаграммы (UDP -сокет).

Изображение слайда
1/1
28

Слайд 28: Конструкторы класса ServerSocket

Java Simplified / Session 34 / 28 of 42 Конструкторы класса ServerSocket Метод Описание public ServerSocket ( int port) throws IOException Создаёт прослушивающий ( listening ) сокет на заданном порте. По умолчанию допустимое количество ожидающих клиентов устанавливается равным 50. public ServerSocket ( int port, int count) throws IOException Увеличивает или уменьшает количество ожидающих клиентов. public ServerSocket ( int port, int count, InetAddr localaddr) throws IOException Увеличивает или уменьшает количество ожидающих клиентов, а также задаёт локальный интерфейс для прослушивания в ожидании запросов на соединения. Некоторые конструкторы класса ServerSocket:

Изображение слайда
1/1
29

Слайд 29: Пример (OurSocket)

Java Simplified / Session 34 / 29 of 42 Пример (OurSocket) 1 import java.net.*; import java.io.*; public class OurSocket { Socket socket; BufferedReader theReader; PrintWriter theWriter; public OurSocket(String host, int port)throws UnknownHostException, IOException { this(new Socket(host, port)); } public OurSocket(Socket s)throws UnknownHostException, IOException { socket = s; theReader = new BufferedReader( new InputStreamReader(socket.getInputStream())); theWriter = new PrintWriter( socket.getOutputStream(), true); } public Socket getSocket() { return socket; } public void close()throws IOException { socket.close(); } public String readLine()throws IOException { return theReader.readLine(); } public void println(String s)throws IOException { theWriter.println(s); } }

Изображение слайда
1/1
30

Слайд 30: Пример (ServerWindow)

Java Simplified / Session 34 / 30 of 42 Пример (ServerWindow) Сторона сервера import java.net.*; import java.io.*; import java.util.*; public class ServerWindow { public static final int PORT = 1234; ServerSocket sst; OurSocket os; Vector morning = new Vector(); Vector night = new Vector(); public static void main(String [] args) { new ServerWindow().init(); } public void init() { try { BufferedReader in; String line; in = new BufferedReader(new InputStreamReader(new FileInputStream("morning.txt"))); while ((line = in.readLine()) != null) { morning.addElement(line); } 1 in.close(); in = new BufferedReader(new InputStreamReader(new FileInputStream("night.txt"))); while ((line = in.readLine()) != null) { night.addElement(line); } in.close(); sst = new ServerSocket(PORT); while(true) { System.err.println("Here's the Server... ready and running."); os = new OurSocket(sst.accept()); String s = os.readLine(); System.out.println("Read " + s + " from client.");

Изображение слайда
1/1
31

Слайд 31: Пример (продолжение) (SocketWindow)

Java Simplified / Session 34 / 31 of 42 Пример (продолжение) (SocketWindow) 2 Сторона сервера if (s.equalsIgnoreCase("morning")) { send(morning); } else if (s.equalsIgnoreCase("night")) { send(night); } else { System.err.println("Invalid request: " + s); } os.close(); System.err.println("Finished processing !!"); } } catch(Exception ex) { ex.printStackTrace(); } } public void send(Vector v) throws IOException { int size = v.size(); for(int i = 0; i < 3; i++) { int n = (int) (Math.random() * size); os.println((String) v.elementAt(n)); } } } Output

Изображение слайда
Изображение для работы со слайдом
1/2
32

Слайд 32: Пример (ClientWindow)

Java Simplified / Session 34 / 32 of 42 Пример (ClientWindow) Сторона клиента import java.applet.*; import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; //<applet code=ClientWindow width=300 height=300></applet> public class ClientWindow extends Applet implements ActionListener { Button morningButton = new Button("Morning"); Button nightButton = new Button("Night"); TextArea message = new TextArea(5,20); OurSocket os; public void init() { setLayout(new BorderLayout()); Panel p = new Panel(); add(p, BorderLayout.NORTH); add(message, BorderLayout.SOUTH); p.setLayout(new GridLayout(1, 0)); p.add(morningButton); p.add(nightButton); message.setEditable(false); morningButton.addActionListener(this); nightButton.addActionListener(this); } public void fatalError(Exception ex) { ex.printStackTrace(); try { os.close(); } catch (Exception ex1) { ; } } public void actionPerformed(ActionEvent e) { if(e.getSource() == morningButton) { try { message.setText(""); os = new OurSocket(getCodeBase().getHost(), 1234); os.println("Morning"); message.append(os.readLine() + "\n"); message.append(os.readLine() + "\n"); message.append(os.readLine() + "\n"); os.close(); } 1

Изображение слайда
1/1
33

Слайд 33: Пример (продолжение) (ClientWindow)

Java Simplified / Session 34 / 33 of 42 Пример (продолжение) (ClientWindow) Сторона клиента 2 catch (Exception ex) { fatalError(ex); } } else { try { message.setText(""); os = new OurSocket(getCodeBase().getHost(), 1234); os.println("Night"); message.append(os.readLine() + "\n"); message.append(os.readLine() + "\n"); message.append(os.readLine() + "\n"); os.close(); } catch (Exception ex) { fatalError(ex); } } } } Вывод

Изображение слайда
Изображение для работы со слайдом
1/2
34

Слайд 34: Пакеты дейтаграмм (UDP)

Java Simplified / Session 34 / 34 of 42 Пакеты дейтаграмм (UDP) Приложения, использующие дейтаграммы, обмениваются информацией, посылая и принимая независимые друг от друга пакеты информации. Клиентам и серверам не требуются постоянные соединения типа «точка-точка» ( point–to–point ). Доставка пакетов не гарантируется, и порядок доставки не обеспечивается.

Изображение слайда
1/1
35

Слайд 35: Пример (MessageServer)

Java Simplified / Session 34 / 35 of 42 Пример (MessageServer) Вывод import java.io.*; public class MessageServer { public static void main(String[] args)throws IOException { new MessageServerThread().start(); } }

Изображение слайда
Изображение для работы со слайдом
1/2
36

Слайд 36: Пример (MessageServerThread)

Java Simplified / Session 34 / 36 of 42 Пример (MessageServerThread) Сторона сервера 1 import java.io.*; import java.net.*; import java.util.* ; public class MessageServerThread extends Thread { protected DatagramSocket socket = null; protected BufferedReader in = null; protected boolean moreQuotes = true; public MessageServerThread() throws IOException { this("MessageServerThread"); } public MessageServerThread(String name) throws IOException { super(name); socket = new DatagramSocket(4445); try { in = new BufferedReader(new FileReader("message.txt")); } catch (FileNotFoundException e) { System.err.println("Could not open quote file."); } } public void run() { while(moreQuotes) { try { byte[] buf = new byte[256]; // receive request into the byte array DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); // figure out response String dString = null; if (in == null) dString = "No more Quotes"; else dString = getNextQuote(); buf = dString.getBytes(); // sends the response to the client at // "address" and "port", when the request came // the address and the port is also attached InetAddress address = packet.getAddress(); int port = packet.getPort();

Изображение слайда
1/1
37

Слайд 37: Пример (продолжение)

Java Simplified / Session 34 / 37 of 42 Пример (продолжение) 2 Сторона сервера packet = new DatagramPacket(buf, buf.length, address, port); socket.send(packet); } catch (IOException e) { e.printStackTrace(); moreQuotes = false; } } socket.close(); } protected String getNextQuote() { String returnValue = null; try { if ((returnValue = in.readLine()) == null) { in.close(); moreQuotes = false; returnValue = "No more quotes. Goodbye."; } } catch (IOException e) { returnValue = "IOException occurred in server."; } return returnValue; } }

Изображение слайда
1/1
38

Слайд 38: Пример (MessageClient)

Java Simplified / Session 34 / 38 of 42 Пример (MessageClient) Сторона клиента import java.io.*; import java.net.*; public class MessageClient { public static void main(String[] args)throws IOException { if(args.length != 1) { System.out.println("Use: java MessageClient <hostname>"); return; } String received; // get a datagram socket DatagramSocket socket = new DatagramSocket(); // send request byte[] buf = new byte[256]; InetAddress address = InetAddress.getByName(args[0]); DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 4445); socket.send(packet); // get response packet = new DatagramPacket(buf, buf.length); socket.receive(packet); // display response received = new String(packet.getData()); if(received.trim().equals("No more quotes. Goodbye.")) System.out.println("No more quotes. Goodbye."); else System.out.println("Quote of the Moment: " + received.trim()); socket.close(); } } Вывод

Изображение слайда
Изображение для работы со слайдом
1/2
39

Слайд 39: Каналы сокетов

Java Simplified / Session 34 / 39 of 42 Каналы сокетов Каналы сокетов отличаются от файловых каналов. Имеются три класса каналов сокетов, ( Datagram Channel, Socket Channel, ServerSocket Channel ), являющихся расширениями класса AbstractSelectableChannel Все каналы сокетов создают объект «пара сокетов» ( peer socket ) при создании экземпляра класса. Каналы сокетов могут работать в неблокирующем режиме.

Изображение слайда
1/1
40

Слайд 40: ServerSocketChannel

Java Simplified / Session 34 / 40 of 42 ServerSocketChannel Класс ServerSocketChannel – это прослушивающий сокет на основе канала. ServerSocketChannel создаётся с помощью метода open(), который возвращает канал, ассоциированный с несвязванным объектом java.net.ServerSocket. Так как ServerSocketChannel не имеет метода bind(), необходимо получить пару сокетов, использовать её для привязки к порту и начать прослушивание в ожидании запросов на соединение. Синтаксис : ServerSocketChannel ssc = ServerSocketChannel.open(); ServerSocket serversocket = ssc.socket(); Serversocket.bind( new InetSocketAddress(1234));

Изображение слайда
1/1
41

Слайд 41: Пример (ChannelAccept)

Java Simplified / Session 34 / 41 of 42 Пример (ChannelAccept) import java.nio.ByteBuffer; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.net.InetSocketAddress; public class ChannelAccept { public static final String GREET = "Hello i am going and joining the Aptech Team\r \n"; public static void main(String [] args)throws Exception { int port = 1234; if (args.length >0) { port = Integer.parseInt (args [0]); } ByteBuffer buffer = ByteBuffer.wrap(GREET.getBytes()); ServerSocketChannel ssc = ServerSocketChannel.open(); ssc.socket().bind(new InetSocketAddress (port)); ssc.configureBlocking (false); while(true) { System.out.println("Waiting for connections"); SocketChannel sc = ssc.accept(); if(sc == null) { Thread.sleep (2000); } else { System.out.println("Incoming connection: " + sc.socket().getRemoteSocketAddress()); buffer.rewind(); sc.write(buffer); sc.close(); } } } }

Изображение слайда
1/1
42

Слайд 42: Пример (продолжение)

Java Simplified / Session 34 / 42 of 42 Пример (продолжение) Вывод

Изображение слайда
Изображение для работы со слайдом
Изображение для работы со слайдом
1/3
43

Слайд 43: Канал сокета и канал дейтаграммы

Java Simplified / Session 34 / 43 of 42 Канал сокета и канал дейтаграммы Канал сокета работает, как клиент, инициализирующий соединение с прослушивающим сервером ( listening server ). Вызов метода socket() в SocketChannel возвращает объект socket. Метод connect() помогает установить соединение с вновь созданным каналом сокета. Каждый объект DatagramChannel имеет ассоциированный с ним объект DatagramSocket. DatagramChannel моделирует протоколы передачи пакето без установления соединения, такие как UDP / IP. Объект канал дейтаграммы ( Datagram Channel ) может работать и как сервер, и как клиент.

Изображение слайда
1/1
44

Слайд 44: Каналы Pipes

Java Simplified / Session 34 / 44 of 42 Каналы Pipes Каналы Pipes находятся в пакете java.nio.channels Класс Pipe создаёт два объекта Channel, которые поддерживают механизм «обратной петли» ( loop back ). Преимуществом использования каналов Pipe является инкапсуляция. Кроме того, они могут использоваться для тестирования.

Изображение слайда
1/1
45

Слайд 45: Пример

Java Simplified / Session 34 / 45 of 42 Пример import java.nio.*; import java.nio.channels.*; import java.util.Random; class ReadPipeDemo { public static void main(String [] args)throws Exception { // creates a writable channel around standard output WritableByteChannel out = Channels.newChannel (System.out); // starts the work and gets a read end of the channel ReadableByteChannel in = startwork(10); ByteBuffer buffer = ByteBuffer.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 ReadableByteChannel startwork(int num)throws Exception { Pipe pipe = Pipe.open(); Working worker = new Working(pipe.sink(), num); worker.start();

Изображение слайда
1/1
46

Слайд 46: Пример (продолжение)

Java Simplified / Session 34 / 46 of 42 Пример (продолжение) return(pipe.source()); } // a working thread object will write the data down the channel private static class Working extends Thread { private String [] message = { "No good deeds go unpunished", "To be or not to be", "You too Brutus", "My karma and mine only", }; private Random rand = new Random(); WritableByteChannel channel; private int num; // creating a general Writable byte channel Working(WritableByteChannel ch, int num) { this.channel = ch; this.num = num; } // thread execution begins here public void run() { ByteBuffer buffer = ByteBuffer.allocate(100); try { for(int count =0; count < this.num; count++) { dowork(buffer); while(channel.write(buffer) > 0) {} } this.channel.close(); } catch(Exception e) { e.printStackTrace(); } } private void dowork( ByteBuffer buffer) { int number = rand.nextInt(message.length); buffer.clear(); buffer.put(message[number].getBytes()); buffer.put("\r\n ".getBytes()); buffer.flip(); } } } Вывод

Изображение слайда
Изображение для работы со слайдом
1/2
47

Слайд 47: Обработчики протоколов

Java Simplified / Session 34 / 47 of 42 Обработчики протоколов Обработчик ( handler ) –это код, написанный разработчиком для обработки особых ситуаций. Пример – Обработчик исключений Обработчики протоколов ( Protocol handlers ) выполняют реализацию конкретных протоколов, необходимую для доступа к web -объектам. Специализированный протокол идентифицируется в URL следующим образом: Пример : MyProtocol://www.somesite.com Здесь не HTTP, а протокол MyProtocol используется для доступа к содержимому сайта www.somesite.com. Java поддерживает обработчики протоколов, известные как обработчики потоков ( stream handlers ). Метод openConnection() класса URLStreamHandler должен быть замещён для предоставления специализированного обработчика протокола. Метод openConnection() возвращает объект класса URLConnection, и этот объект используется для создания потоков ввода и вывода.

Изображение слайда
1/1
48

Слайд 48: Обмен информацией Апплет–Апплет

Java Simplified / Session 34 / 48 of 42 Обмен информацией Апплет–Апплет Мгновенный обмен информацией ( Instant communication ) – наиболее употребляемый термин в наши дни. Службы медицинской скорой помощи являются одним из примеров, когда мгновенный обмен информацией чрезвычайно важен для принятия решений. В Java апплет может послать сообщение в другой апплет через : метод getAppletContext() класса Applet. метод getApplet() интерфейса AppletContext.

Изображение слайда
1/1
49

Слайд 49

Java Simplified / Session 34 / 49 of 42 Пример (FirstApplet) import java.awt.*; import java.applet.*; public class FirstApplet extends Applet { TextArea text; public void init() { text=new TextArea(" "); add(text); } public void putText(String msg) { text.append(msg+"\n"); } }

Изображение слайда
1/1
50

Слайд 50: Пример (SecondApplet)

Java Simplified / Session 34 / 50 of 42 Пример (SecondApplet) import java.awt.*; import java.applet.*; import java.awt.event.*; public class SecondApplet extends Applet implements ActionListener { TextField message; AppletContext AppCon; Button submit; public void init() { message = new TextField(50); add(message); submit = new Button("Submit"); add(submit); submit.addActionListener (this); } public void actionPerformed(ActionEvent e) { AppCon = getAppletContext(); FirstApplet ma = (FirstApplet)AppCon.getApplet("One"); if(ma!=null) { if(e.getSource().equals(submit)) { ma.putText(message.getText()); message.setText(" "); } } } }

Изображение слайда
1/1
51

Слайд 51: Пример (test.html)

Java Simplified / Session 34 / 51 of 42 Пример (test.html) <html> <applet code=SecondApplet width=400 height=400 name="Two"> </applet> <applet code=FirstApplet width=400 height=400 name="One"> </applet> </html>

Изображение слайда
1/1
52

Слайд 52: Пример ( Вывод )

Java Simplified / Session 34 / 52 of 42 Пример ( Вывод )

Изображение слайда
Изображение для работы со слайдом
Изображение для работы со слайдом
1/3
53

Слайд 53: Классы, ориентированные на работу в Web

При работе в глобальной сети Интернет и в World Wide Web мы должны создавать URL ы и работать с ними. Пакет java. net также предлагает набор классов, которые поддерживают Web ‑ориентированные приложения. Пакет java. net содержит следующие Web ‑ориентированные классы: URL URLConnection URLEncoder ContentHandler

Изображение слайда
1/1
54

Слайд 54: Класс URL

Аббревиатура URL расшифровывается, как Uniform Resource Locator (Унифицированный локатор ресурса). Он предоставляет универсальный способ определения местонахождения ресурсов в Web. Класс java. net. URL инкапсулирует объекты, относящиеся к Web.

Изображение слайда
Изображение для работы со слайдом
1/2
55

Слайд 55: Класс URLConnection

Это абстрактный класс. Класс URLConnection инкапсулирует активные HTTP ‑соединения в среде Web. Этот класс поддерживает несколько методов, позволяющих изменить параметры настройки по умолчанию, параметры настройки запросов и текущие настройки объекта URLConnection. Класс URLConnection используется для получения информации о Web ‑объектах и о соединениях с Web ‑объектами. Класс HttpURLConnection является производным (подклассом) класса URLConnection.

Изображение слайда
1/1
56

Слайд 56: Класс URLEncoder

Этот класс преобразует текстовые строки в нужную форму, которая может быть использована, как составная часть URL. Класс предоставляет метод encode (), который преобразует пробелы, присутствующие в тексте, в знаки "плюс" (+). Он использует знак "процент" (%), как экранирующий символ для записи специальных символов (символьных последовательностей).

Изображение слайда
1/1
57

Слайд 57: Класс ContentHandler

Класс ContentHandler обрабатывает и извлекает данные, которые имеют тип MIME (Multipurpose Internet Mail Extension) (многоцелевые расширения электронной почты в сети Internet). MIME включает различные типы объектов, как например, sound (звук), image (изображение), video (видео) и т.д. Класс ContentHandler предоставляет средства просмотра ( viewers ) для обработки MIME ‑типов.

Изображение слайда
1/1
58

Слайд 58: Подведение итогов

Java Simplified / Session 34 / 58 of 42 Подведение итогов IP -адрес – это 32-битовое число, записываемое в десятичном, 16-ричном или любом другом формате, и используемое для дого, чтобы отличить одну систему от другой при обмене информацией между компьютерами. Транспортные протоколы используются для обеспечения передачи информации из одного порта в другой. TCP и UDP являются двумя такими протоколами. TCP более широко используется, чем UDP. Пакет java.net содержит набор классов, которые реализуют соединения браузер-сервер, наиболее простые в классе URL. Класс URL инкапсулирует Web -объекты в соответствии с их URL -адресами. Сокет ( Socket ) – это ссылка на канал обмена информацией между приложениями в сетевой среде.

Изображение слайда
1/1
59

Последний слайд презентации: Занятие 17: Подведение итогов (продолжение)

Java Simplified / Session 34 / 59 of 42 Подведение итогов (продолжение) Используя сокеты, можно посылать и принимать сообщения по сети, использующей протоколы TCP/IP Существуют два типа сокетов : TCP (Transfer Control Protocol) or Internet Protocol (IP) sockets UDP (User Datagram Protocol) Java предоставляет следующие классы для программирования сокетов : java.net.Socket java.net.ServerSocket Класс ServerSocket позволяет выполнить привязку к порту и ожидать запросов на соединение от клиентов Java поддерживает обработчики протоколов, известные как обработчики потоков ( stream handlers ). Они реализуются, как подклассы класса URLStreamHandler

Изображение слайда
1/1
Реклама. Продолжение ниже