- •Основы создания сетевых
- •Цели занятия
- •Модель OSI
- •Понятие порта
- •Модель «Клиент-сервер»
- •Модель «Клиент-сервер»
- •Модель «Клиент-сервер»
- •Пакет java.net
- •Адресация
- •Общая схема соединения
- •Класс Socket
- •Порядок работы с сокетом
- •Порядок работы с сокетом
- •Порядок работы с сокетом
- •Класс ServerSocket
- •Класс ServerSocket
- •Сервер параллельной
- •Дейтаграммы
- ••URL – адресUniformресурса в ИнтернетResource Locator
- •Uniform Resource Locator
- •Uniform Resource Locator
- •Uniform Resource Locator
- •Uniform Resource Locator
- •Литература
Пакет java.net
11 • Адресация
•Установление TCP-соединения
•Передача/прием дейтаграмм через UDP
•Обнаружение/идентификация сетевых ресурсов
•Безопасность: авторизация/права доступа
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Адресация
12 • Класс InetAddress является интернет-адресом, или IP
•Экземпляры этого класса создаются не с помощью конструкторов, а с помощью статических методов:
InetAddress getLocalHost() – возвращает IP-адрес машины, на которой исполняется Java-программа
InetAddress getByName(String name) – возвращает адрес сервера, чье имя передается в качестве параметра. Это может быть как DNS-имя, так и числовой IP, записанный в виде текста, например, "67.11.12.101"
InetAddress[] getAllByName(String name) – определяет все IP- адреса указанного сервера
•Класс Inet4Address служит для описания адреса, состоящего из 4 байтов, с помощью класса Inet6Address описывается адрес, состоящий из 16 байтов
•Начиная с JDK 1.4. существует класс InetSocketAddress(String hostname, int port), который создаёт объект адреса для указанного узла и порта
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Общая схема соединения
13
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Класс Socket
14 • Реализует клиентский сокет и его функции
•Конструкторы
Socket()
Socket(InetAddress address, int port)
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
Socket(String host, int port)
Socket(String host, int port, InetAddress localAddr, int localPort)
•Методы
void close() – закрывает используемый сокет
InputStream getInputStream() – возвращает поток, позволяющий читать данные, переданные по сети
OutputStream getOutputStream() – возвращает поток, позволяющий передавать данные по сети
И т.д.
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Порядок работы с сокетом
клиента
15• Открытие сокета
•Открытие потока ввода и/или потока вывода для сокета
•Чтение и запись в потоки согласно установленному протоколу общения с сервером
•Закрытие потоков ввода-вывода
•Закрытие сокета
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Порядок работы с сокетом
клиента
16 Пример 1
import java.io.*; import java.net.*;
public class EchoClient {
public static void main(String[] args) throws IOException { Socket echoSocket = null;
PrintWriter out = null; BufferedReader in = null; try {
echoSocket = new Socket("taranis", 7);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new
InputStreamReader( echoSocket.getInputStream())); } catch (UnknownHostException e) {
System.err.println("Don't know about host: taranis."); System.exit(1);
}
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
|
Порядок работы с сокетом
17 catch (IOException e) {клиента
System.err.println("Couldn't get I/O for the connection to: taranis."); System.exit(1);
}
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) { out.println(userInput); System.out.println("echo: " + in.readLine());
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Класс ServerSocket
18• Реализует серверный сокет и его функции
•Конструкторы
ServerSocket()
ServerSocket(int port)
ServerSocket(int port, int backlog)
•Методы
void close() – закрывает используемый сокет
Socket accept() – приостагавливает выполнение программы и ожидает обращения клиента
И т.д.
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Класс ServerSocket
19Пример 2 try {
serverSocket = new ServerSocket(4444);
}catch (IOException e) { System.out.println(
"Could not listen on port: 4444");
System.exit(-1);
}
Socket clientSocket = null; try {
clientSocket = serverSocket.accept(); } catch (IOException e) {
System.out.println("Accept failed: 4444"); System.exit(-1);
}
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |
Сервер параллельной
обработки запросов
20 • Установить соединение клиент-сервер
• Сервер параллельной обработки передает управление дочернему процессу
• Если в момент обработки запроса от первого клиента поступает запрос от второго, сервер параллельной обработки передает управление второму дочернему процессу
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |