
- •Міністерство освіти і науки україни
- •1 Лабораторна робота №1 java-сокети
- •1.1 Теоретичні відомості
- •1.1.1 Загальні відомості про сокети
- •1.1.2 Програмні засоби Java для роботи з сокетами
- •1.2 Приклади розподілених java-додатків на основі сокетів
- •1.2.1 Приклад 1
- •1.2.2 Приклад 2
- •1.2.3 Приклад 3
- •1.3 Завдання до лабораторної роботи
- •1.3.1 Завдання 1
- •1.3.2 Завдання 2
- •1.3.3 Завдання 3
- •Завдання
- •1.4 Контрольні питання
- •1.5 Зміст письмового звіту
- •2 Лабораторна робота №2 java rmi
- •2.1 Теоретичні відомості про Java rmi
- •2.1.1 Загальні відомості
- •2.1.2 Рівень заглушок
- •2.1.3 Рівень віддаленого посилання
- •2.1.4 Транспортний рівень
- •2.1.5 Віддалені об'єкти
- •2.1.6 Архітектура Java rmi
- •2.1.7 Створення віддаленого інтерфейсу
- •2.2 Завдання до лабораторної роботи
- •2.2.1 Створення віддаленого інтерфейсу
- •2.2.2 Створення реалізації віддаленого інтерфейсу
- •2.2.3 Створення стаба й скелетона
- •2.2.4 Створення серверного додатка
- •2.2.5 Створення клієнтського додатка
- •2.2.6 Запуск розподіленого додатка
- •2.2.7 Завдання 1 – створення rmi-додатка
- •2.2.8 Завдання 2 – створення власного rmi-додатка
- •2.2.9 Завдання 3 – створення власного rmi-додатка
- •2.2.10 Завдання 4 – самостійна робота за індивідуальним варіантом
- •2.3 Контрольні питання
- •2.4 Зміст письмового звіту
- •Література для додаткового вивчення
- •Додаток а Java-методи для перетворення рядків (тип String) у числові типи даних
- •Додаток б
- •Приклад використання деяких математичних методів Java:
1.2 Приклади розподілених java-додатків на основі сокетів
1.2.1 Приклад 1
У розподіленому додатку - приклад 1, реалізований віддалений метод print(), що виводить рядок-повідомлення.
Для створення та запуску розподіленого java-додатка (приклад 1), виконайте наступні кроки:
Використовуючи код, наведений нижче (п.1.2.1), створіть java-файли - TCPServer.java та TCPClient.java
Відкомпілюйте створені java-файли за допомогою команди:
> javac *.java
Запустіть TCP-сервер за допомогою команди:
> java TCPServer
Запустіть TCP-клієнта за допомогою команди:
> java TCPClient
У результаті виконання програм приклада 1 на консоль клієнта буде виведений рядок - Hello Student.
Код TCP-сервера має вигляд:
import java.net.*;
import java.io.*;
public class TCPServer {
public static String print()
{return "Hello Student";}
public static void main(String[] args)
{
try
{
ServerSocket socket =
new ServerSocket(1666);
while (true)
{
Socket client = socket.accept();
PrintStream out =
new PrintStream(client.getOutputStream());
out.println(print());
out.close(); client.close();
}}
catch(Exception e) {System.out.println(e);}}}
Код TCP-клієнта має вигляд:
import java.net.*;
import java.io.*;
public class TCPClient {
public static void main(String[] args) {
try{
Socket socket =
new Socket("localhost",1666);
DataInputStream dt =
new DataInputStream(socket.getInputStream());
String res = null;
while ((res=dt.readLine())!=null)
System.out.println(res);
dt.close(); socket.close();
}
catch(Exception e)
{
System.out.println(e);}}}
1.2.2 Приклад 2
У розподіленому додатку - приклад 2, реалізований віддалений метод func(), що виконує додавання двох цілих чисел.
Для створення та запуску розподіленого java-додатка (приклад 2), виконайте наступні кроки:
Використовуючи код, наведений нижче (п.1.2.2), створіть java-файли -TCPServer.java та TCPClient.java.
Відкомпілюйте створені java-файли за допомогою команди:
> javac *.java
Запустіть TCP-Сервер за допомогою команди:
> java TCPServer
Запустіть TCP-Клієнта за допомогою команди:
> java TCPClient 1 2
У результаті виконанні програм приклада 2 на консоль клієнта буде виведений рядок - Result = 3.
Код TCP-сервера має вигляд:
import java.net.*;
import java.io.*;
public class TCPServer {
public static long func(long a,long b)
{return a+b;}
public static void main(String[] args)
{try{
ServerSocket socket =new ServerSocket(1666);
while (true)
{
Socket client = socket.accept();
DataInputStream in =
new DataInputStream(client.getInputStream());
String req1 = in.readLine();
String req2 = in.readLine();
long num1=Long.parseLong(req1);
long num2=Long.parseLong(req2);
long sum=func(num1,num2);
PrintStream out =
new PrintStream(client.getOutputStream());
out.println("Result = "+ sum);
in.close(); out.close();
client.close(); }
}
catch (Exception e) {System.out.println(e);}}}
Код TCP-клієнта має вигляд:
import java.net.*;
import java.io.*;
public class TCPClient {
public static void main(String[] args)
{try{
Socket socket =new Socket("localhost",1666);
PrintStream out =
new PrintStream(socket.getOutputStream());
String number1 = args[0];
String number2 = args[1];
out.println(number1);
out.println(number2);
DataInputStream dt =
new DataInputStream(socket.getInputStream());
String res = null;
while ((res=dt.readLine())!=null)
System.out.println(res);
out.close(); dt.close(); socket.close();
}
catch (Exception e) {System.out.println(e);}}}