Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мережеві_технології_java_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
425.98 Кб
Скачать

2. Класи серверів

Клас ServerSocket призначений для створення об’єктів, які відповідають за з’єднання зі сторони сервера, він очікує, поки клієнт встановить з ним з’єднання. Об’єкт типу ServerSocket реєструється в системі про готовність організувати з’єднання з клієнтами. Два конструктори, створюючи об’єкти класу ServerSocket, дозволяють задати номер порта для з’єднання з клієнтом та час очікування на звільнення порту (Необов’язковий парметр. Якщо порт є зайнятий, очікування на звільнення здійснюється count мілісекунд. ):

ServerSocket(int port); – створення об’єкту для даного порту;

ServerSocket(int port, int count); – створення сокету для даного порту.

Як ми бачимо з конструкторів клас ServerSocket не налагоджує фізичного зв’язку з віддаленими комп’ютерами, а вказує системі правила доступу до конкретного порту з врахуванням часу прослуховування порту тощо. Після зв’язування програми з портом з допомогою метода accept() можна під’єднатися до цього порту і почати прослуховувати вхідні повідомлення. Процес виконання програми блокується поки деякий клієнт не встановить з’єднання до даного порту. Після встановлення з’єднання метод accept() повертає у процес, який його викликав, вказівник на об’єкт класу Socket.

Схема з’єднання клієнта і сервера представлена на рис.3.

Рис.3. Використання класів для з’єднання клієнтів зсервером

Окремі класи Java призначені для підтримки передачі пакетів на основі UDP протоколу, а саме: DatagramPacket – об’єкти цього класу (контейнери) призначені для зберігання даних пакетів, які пересилаються; DatagramSocket – об’єкти призначені для реалізації пересилання (відправлення та приймання).

Наведемо приклад серверної програми:

import java.net.*; // бібліотека підтримки клієнт-серверних функцій

import java.io.*; // бібліотека підтримки функцій вводу виводу

public class MyServer {

class Session extends Thread {

Socket socket; // отримання сокет сесії

public Session(Socket s) {socket = s;}

public void run(){

//процедура створення та обробки потоків вводу виводу

}

public MyServer(){

try{

ServerSocket serverSocket = new ServerSocket(<номер порта>);

// Цикл що чекає під єднання клієнта

while(true){

Socket clientSocket;

System.out.println("Listen...");

try{

clientSocket = serverSocket.accept();

Session ses = new Session(clientSocket);

ses.start();

} catch (IOException e) {System.out.println("Error of receiving...");}

}

} catch (IOException e) {

System.out.println("Port <номер порта> is bizy...");

System.exit(-1);

}

}

public static void main(String arg[])

{

new MyServer();}

}

}

3. Вказівки до виконання роботи

Розробити сценарій взаємодії двох програм. Вибрати необхідні класи та методи. Вибрати структури даних. Запрограмувати два мережних модуля обміну файлами.

4. Послідовність виконання роботи

  1. Розробити механізм читання вхідного файлу та його рзміщенння;

  2. Спроектувати структури для зберіганння даних;

  3. Формалізувати алгоритм. Вибрати класи та методи для реалізації;

  4. Створити візуальні засоби.