Разделы презентаций


Занятие 17

Содержание

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

Слайды и текст этой презентации

Слайд 1Занятие 17
Работа в сети

Занятие 17Работа в сети

Слайд 2Java Simplified / Session 34 / of 42
Цели
Объяснить, что

такое апплеты и URLы
Объяснить, что такое сокеты
Объяснить, что такое каналы
Рассмотреть

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

Слайд 3Java Simplified / Session 34 / of 42
Введение
Обмен информацией

играет важную роль в жизни каждого.
Компьютеры являются наилучшими средствами обмена

информацией в глобальном масштабе.
Компьютеры в сети Internet обмениваются информацией с использованием протоколов Transmission Control Protocol (TCP)/Internet Protocol (IP).
IP-адрес отличает один компьютер в сети от другого.
Пример IP-адреса: 205.20.167.177
В пределах одной системы программы обмениваются информацией друг с другом, используя порты (Ports).
Порты обеспечивают обмен информацией между программами.
Transmission Control Protocol (TCP) и User Datagram Protocol (UDP) являются двумя сетевыми протоколами.
Java Simplified / Session 34 /  of 42ВведениеОбмен информацией играет важную роль в жизни каждого.Компьютеры являются

Слайд 4Сетевая среда и глобальная сеть Интернет
Сетевая среда (Networking) – это

концепция соединения двух (и более) машин.
В глобальной сети Интернет

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

Слайд 5Протоколы
Протоколы помогают передавать информацию от одного компьютера к другому.
Компьютеры

передают информацию друг другу путём обмена пакетами данных
Internet Protocol (IP)

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

Слайд 6Протоколы (продолжение)
Порты делают возможным обмен информацией между компьютерами и программами.


Предопределённые, используемые повсеместно номера портов:

Протоколы (продолжение)Порты делают возможным обмен информацией между компьютерами и программами. Предопределённые, используемые повсеместно номера портов:

Слайд 7TCP и UDP
Транспортные протоколы обеспечивают обмен данными между прикладными программами.


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

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

Слайд 8TCP и UDP (продолжение)
UDP является протоколом без установления соединения при

передаче данных, так как не устанавливает связь при передаче данных.


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

Слайд 9Обработка данных по схеме Клиент–Сервер
Глобальная сеть Интернет предоставляет большое разнообразие

сервисов; эти сервисы организованы в соответствии с архитектурой Клиент–Сервер.
Клиентские

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

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

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

через клиентские сокеты, а серверы – через серверные сокеты.
Обработка данных по схеме Клиент–Сервер (продолжение)Клиент выполняет запрос к серверу, а сервер предоставляет запрошенный сервис клиенту. Клиенты

Слайд 11Пакет java.net
Пакет java.net предоставляет классы, которые поддерживают основанный на сокетах

обмен информацией по схеме Клиент–Сервер.
Пакет java.net состоит из следующих

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

Слайд 12Класс InetAddress
Этот класс помогает находить адреса в сети Интернет.
Нужно

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

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

Слайд 13Java Simplified / Session 34 / of 42
InternetAddress
Класс

InetAddress используется для инкапсуляции как IP-адреса, так и доменного имени

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

Слайд 14Java Simplified / Session 34 / 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();
}
}
}

Вывод

Java Simplified / Session 34 /  of 42Примерimport java.net.*;class InetAddressDemo{ 	public static void main(String [] args)

Слайд 15Java Simplified / Session 34 / of 42
Использование URLов

с апплетами
Internet состоит из множества сетей
Эти сети предоставляют разнообразные ресурсы
Ресурс

1

Ресурс 2

Ресурс 3

Ресурс 4

Ресурс 5

Сервер

Java-апплеты помогают при подключении
к различным web-сайтам

Клиент

Uniform Resource Locator (URL)

Java Simplified / Session 34 /  of 42Использование URLов с апплетамиInternet состоит из множества сетейЭти сети

Слайд 16Java Simplified / Session 34 / of 42
Использование URLов

с апплетами
Используя Java-апплеты, можно устанавливать соединения с различными Web-сайтами и

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

Слайд 17Java Simplified / Session 34 / 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");
}
}
}

Вывод

Java Simplified / Session 34 /  of 42Примерimport java.awt.*;import java.awt.event.*;import java.net.*;import java.applet.*;public class UrlWindow extends Applet

Слайд 18Java Simplified / Session 34 / 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());
}
}

Вывод

Java Simplified / Session 34 /  of 42ПримерНекоторые методы класса URL используются в этом примере.import java.net.*;class

Слайд 19Java Simplified / Session 34 / of 42
Сокеты
Каждый человек,

который имеет телефон, подключённый к телефонной системе, получает уникальный номер

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

Java Simplified / Session 34 /  of 42СокетыКаждый человек, который имеет телефон, подключённый к телефонной системе,

Слайд 20Сокеты
Сокет – это комбинация IP-адреса и порта. Сокет адрес надает

возможность другим компьютерам в сети находить определенную программу, которая исполняется

на определенном компьютере. Вы можете отображать сокет адрес вот так 64.104.137.58:80, где 64.104.137.58 – IP-адрес и 80 – порт.

Java Simplified / Session 34 / of 42

СокетыСокет – это комбинация IP-адреса и порта. Сокет адрес надает возможность другим компьютерам в сети находить определенную

Слайд 21Java Simplified / Session 34 / of 42
Программирование сокетов

в Java
Сокеты часто используются в приложениях типа клиент/сервер на языке

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

Слайд 22Класс Socket
Java‑программы используют сокеты для подключения к сети.
Класс Socket

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

и сервером.

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

Слайд 23Класс ServerSocket
Класс ServerSocket реализует серверный сокет протокола TCP.
Метод accept()

используется для включения серверного сокета в режим прослушивания и ожидания

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

Слайд 24Класс DatagramSocket
Этот класс использует протокол передачи дейтаграмм пользователя User Datagram

Protocol (UDP) для реализации клиентских и серверных сокетов.
UDP является

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

Слайд 25Класс DatagramPacket
Этот класс использует объекты класса DatagramSocket для инкапсуляции посылаемых

и принимаемых дейтаграмм.
В этом классе имеются два конструктора: один

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

Слайд 26Java Simplified / Session 34 / of 42
Конструкторы класса

Socket
Некоторые конструкторы класса Socket:

Java Simplified / Session 34 /  of 42Конструкторы класса SocketНекоторые конструкторы класса Socket:

Слайд 27Java Simplified / Session 34 / of 42
Конструкторы класса

Socket (продолжение)

Java Simplified / Session 34 /  of 42Конструкторы класса Socket (продолжение)

Слайд 28Java Simplified / Session 34 / of 42
Конструкторы класса

ServerSocket
Некоторые конструкторы класса ServerSocket:

Java Simplified / Session 34 /  of 42Конструкторы класса ServerSocketНекоторые конструкторы класса ServerSocket:

Слайд 29Java Simplified / Session 34 / 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);
}
}

Java Simplified / Session 34 /  of 42Пример (OurSocket)1import java.net.*;import java.io.*;public class OurSocket {  Socket

Слайд 30Java Simplified / Session 34 / 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.");

Java Simplified / Session 34 /  of 42Пример (ServerWindow)Сторона сервераimport java.net.*;import java.io.*;import java.util.*;public class ServerWindow {

Слайд 31Java Simplified / Session 34 / 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

Java Simplified / Session 34 /  of 42Пример (продолжение) (SocketWindow)2Сторона сервера	if (s.equalsIgnoreCase(

Слайд 32Java Simplified / Session 34 / of 42
Пример (ClientWindow)
Сторона

клиента
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
//
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

Java Simplified / Session 34 /  of 42Пример (ClientWindow)Сторона клиентаimport java.applet.*;import java.awt.*;import java.awt.event.*;import java.net.*;import java.io.*;//public class

Слайд 33Java Simplified / Session 34 / 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);
}
}
}
}

Вывод

Java Simplified / Session 34 /  of 42Пример (продолжение) (ClientWindow)Сторона клиента2		catch (Exception ex)		{

Слайд 34Java Simplified / Session 34 / of 42
Пакеты дейтаграмм

(UDP)
Приложения, использующие дейтаграммы, обмениваются информацией, посылая и принимая независимые друг

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

Слайд 35Java Simplified / Session 34 / of 42
Пример (MessageServer)
Вывод
import

java.io.*;
public class MessageServer
{
public static void main(String[] args)throws IOException


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

Слайд 36Java Simplified / Session 34 / 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();

Java Simplified / Session 34 /  of 42Пример (MessageServerThread)Сторона сервера1import java.io.*;import java.net.*;import java.util.* ;public class MessageServerThread

Слайд 37Java Simplified / Session 34 / 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;
}
}

Java Simplified / Session 34 /  of 42Пример (продолжение)2Сторона сервера		packet = new DatagramPacket(buf, buf.length, address, port);

Слайд 38Java Simplified / Session 34 / 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 ");
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();
}
}

Вывод

Java Simplified / Session 34 /  of 42Пример (MessageClient)Сторона клиентаimport java.io.*;import java.net.*;public class MessageClient { 	public

Слайд 39Java Simplified / Session 34 / of 42
Каналы сокетов
Каналы

сокетов отличаются от файловых каналов.
Имеются три класса каналов сокетов,

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

Слайд 40Java Simplified / Session 34 / of 42
ServerSocketChannel
Класс

ServerSocketChannel – это прослушивающий сокет на основе канала.
ServerSocketChannel создаётся

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

Слайд 41Java Simplified / Session 34 / 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();
}
}
}
}


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

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

Слайд 43Java Simplified / Session 34 / of 42
Канал сокета

и канал дейтаграммы
Канал сокета работает, как клиент, инициализирующий соединение с

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

Слайд 44Java Simplified / Session 34 / of 42
Каналы Pipes
Каналы

Pipes находятся в пакете java.nio.channels
Класс Pipe создаёт два объекта Channel,

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

Слайд 45Java Simplified / Session 34 / 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();
Java Simplified / Session 34 /  of 42Примерimport java.nio.*;import java.nio.channels.*;import java.util.Random;class ReadPipeDemo{ 	public static void main(String

Слайд 46Java Simplified / Session 34 / 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();
}
}
}

Вывод


Слайд 47Java Simplified / Session 34 / of 42
Обработчики протоколов
Обработчик

(handler) –это код, написанный разработчиком для обработки особых ситуаций.
Пример –

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

Java Simplified / Session 34 /  of 42Обработчики протоколовОбработчик (handler) –это код, написанный разработчиком для обработки

Слайд 48Java Simplified / Session 34 / of 42
Обмен информацией

Апплет–Апплет
Мгновенный обмен информацией (Instant communication) – наиболее употребляемый термин в

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

Слайд 49Java Simplified / Session 34 / 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");
}
}
Java Simplified / Session 34 /  of 42Пример (FirstApplet)import java.awt.*;import java.applet.*;public class FirstApplet extends Applet{ 	TextArea

Слайд 50Java Simplified / Session 34 / 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(" ");
}
}
}
}

Java Simplified / Session 34 /  of 42Пример (SecondApplet)import java.awt.*;import java.applet.*;import java.awt.event.*;public class SecondApplet extends Applet

Слайд 51Java Simplified / Session 34 / of 42
Пример (test.html)

code=SecondApplet width=400 height=400 name="Two">




Java Simplified / Session 34 /  of 42Пример (test.html)

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

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

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

Интернет и в World Wide Web мы должны создавать URLы

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

Слайд 54Класс URL
Аббревиатура URL расшифровывается, как Uniform Resource Locator (Унифицированный локатор

ресурса).
Он предоставляет универсальный способ определения местонахождения ресурсов в Web.


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

Слайд 55Класс URLConnection
Это абстрактный класс.
Класс URLConnection инкапсулирует активные HTTP‑соединения в

среде Web.
Этот класс поддерживает несколько методов, позволяющих изменить параметры

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

Слайд 56Класс URLEncoder
Этот класс преобразует текстовые строки в нужную форму, которая

может быть использована, как составная часть URL.
Класс предоставляет метод

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

Слайд 57Класс ContentHandler
Класс ContentHandler обрабатывает и извлекает данные, которые имеют тип

MIME (Multipurpose Internet Mail Extension) (многоцелевые расширения электронной почты в

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

Слайд 58Java Simplified / Session 34 / of 42
Подведение итогов
IP-адрес

– это 32-битовое число, записываемое в десятичном, 16-ричном или любом

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

Слайд 59Java Simplified / Session 34 / 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
Java Simplified / Session 34 /  of 42Подведение итогов (продолжение)Используя сокеты, можно посылать и принимать сообщения

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика