Kết quả liệt kê số nguyên tố với máy chủ RMI

Một phần của tài liệu lap_trinh_mang (Trang 106 - 108)

Ví dụ 7-2. Viết chương trình tìm ước số chung lớn nhất và kiểm tra tính nguyên

tố của hai số nguyên dương bất kỳ, sử dụng kỹ thuật lập trình RMI. Phương thức kiểm tra số nguyên tố và phương thức tính ước số chung lớn nhất của hai số được triệu gọi từ xa.

Bước 1: Tạo 2 project RMI_XuLySo_Client và RMI_XuLySo_Server.

Bước 2: Trong project RMI_XuLySo_Server tạo một package đặt tên là Core.

Trong package này tạo một interface đặt tên là NumberInterface với nội dung như sau:

public interface NumberInterface extends Remote{

public int ucln(int a, int b) throws RemoteException; public boolean isPrime(int x) throws RemoteException; }

Phương thức ucln(int a, int b) dùng để dùng để tìm ước số chung lớn nhất của hai số nguyên ab.

Phương thức isPrime(int x) dùng để kiểm tra một số x có phải là số nguyên tố hay không.

Sao chép package Core sang project RMI_XuLySo_Client.

Bước 3: Hiện thực NumberInterface. Trong project RMI_XuLySo_Server tạo một package mới đặt tên là RMI. Trong package này tạo một lớp mới đặt tên là

NumberClass.

Hiện thực hóa interface trong lớp này như sau:

public class NumberClass extends UnicastRemoteObject implements NumberInterface{

//Constructor

public NumberClass() throws RemoteException { }

@Override

public int ucln(int a, int b) throws RemoteException { while (a != b) { if (a>b) { a = a-b; } else { b = b-a; } } return a; } @Override

public boolean isPrime(int x) throws RemoteException { for (int i = 2; i <= Math.sqrt(x); i++) {

if (x%i == 0) { return false; } } return true; } }

Bước 4: Lập trình cho Server. Trong package RMI tạo class đặt tên là Server.

Chúng ta tạo một Registry trên cổng bất kỳ (chẳng hạn 3210) rồi ràng buộc (bind) một tên là NumberService cho một đối tượng thuộc lớp NumberClass trên đó.

public class Server {

private final int PORT = 3210;

public static void main(String[] args) { new Server().run();

}

public void run() { try {

Registry reg = LocateRegistry.createRegistry(PORT); reg.rebind("NumberService", new NumberClass()); System.out.println("M‡y chủ đang chạy..."); } catch (RemoteException ex) {

System.out.println("Kh™ng thể khởi chạy m‡y chủ!!!"); }

} }

Bước 5: Lập trình cho Client. Trong project RMI_XuLySo_Client tạo một

package đặt tên là RMI. Trong package này tạo một JFrame Form đặt tên là Client. Thiết kế giao diện cho Client như sau:

Một phần của tài liệu lap_trinh_mang (Trang 106 - 108)

Tải bản đầy đủ (PDF)

(114 trang)