Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по ТРС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
201.18 Кб
Скачать

Клієнт читання файлів мовою Java

Наступний лістінг містить код клієнта мовою Java. Після зчитування імен вузла і файлу з командного рядка клієнт намагається відкрити з'єднання через сокет з серверним вузлом через порт 9999. Якщо сервер може прийняти з'єднання, клієнт відправляє ім'я файлу filename серверові, одержує рядки файлу і виводить них на дисплей. Якщо виникає виключна ситуація, клієнт виводить повідомлення про помилку і завершує роботу.

import java.io.*; import java.net.*; public class Client {   public static void main( String[] args) {     try { // прочитати аргументи командного рядка       if (args.length != 2) {         System.out.println( "Usage: \n java Client localhost a1.txt");         System.exit(1);         }       String host = args[0];       String filename = args[1]; // відкрити сокет, вхідний і вихідний потоки для нього       Socket socket = new Socket( host, 9999);       BufferedReader from_server = new BufferedReader(             new InputStreamReader( socket.getInputStream()));       PrintWriter to_server = new PrintWriter( socket.getOutputStream()); // відправити серверу им'я файлу, а потім читати і // друкувати рялки до закриття з'єднання з сервером       to_server.println( filename);       to_server.flush();       String line;       while ((line = from_server.readLine()) != null) {         System.out.println(line);         }       }     catch (Exception e) { // повідомляти про будь-яке виключення       System.err.println( e.toString());       }     }   }

 

Порядок компіляції та запуску програм

Ці дві програми виконуються таким чином. Спочатку кожна компілюється на своєму вузлі за допомогою Java-компілятора, наприклад javac. Потім командою

java FileReaderServer

запускається сервер. Після цього на іншому (або цьому ж) вузлі командою

java Client hostname filename

запускається клієнт (hostname - це ім'я вузла, на якому виконується сервер, a filename - ім'я файлу, що хоче отримати клієнт з сервера). Сервер буде виконуватися до знищення його процесу (наприклад клавіатурною командою Ctrl-C), або до виникнення виняткової ситуації. Кількість програм-клієнтів, що можуть звертатися до серверу необмежена.

 

Завдання:

  1. Користуючись наведеним прикладом розробити свої власні програми клієнта та сервера.

 

  1. Відкомпілювати ці програми. Для цього треба створити окремий каталог (наприклад n:\java\), розташувати у ньому файли FileReaderServer.java та Client.java, викликати компілятор javac таким чином:

    n:\java\>javac Client.java n:\java\>javac FileReaderServer.java

  2.  

  3. В цьому-ж каталозі створити текстовий файл. Наприклад таким чином:

    n:\java\>dir >a1.txt

  4.  

  5. У окремому термінальному вікні запустити серверний модуль:

    n:\java\>java FileReaderServer

  6.  

  7. Після цього, у окремому термінальному вікні запустити модуль клієнта таким чином:

    n:\java\>java Client localhost a1.txt

  8. Примітка: тут вважається, що і клієнт і сервер запущені на одному й тому-ж комп'ютері.

  9.  

  10. Запустити модулі клієнта і сервера на різних комп'ютерах та перевірити їх роботу у багатокомп'ютерному варіанті. При цьому під час запуску клієнтів замість імені localhost треба вказувати IP - адресу комп'ютера, на якому працює серверний модуль.