Viết chương trình kết nối từ các máy khách (clients). Khi nhận được một kết nối, chương trình phân tích n thành tích các số nguyên tố của số đó và gửi kết quả trở lại cho máy khách.
Xem thêm:
số nguyên tố đối xứng shell script
1. Mô tả bài toán
Đề bài: Viết chương trình phân tích số, hoạt động theo mô hình client-server, sử dụng TCP socket:
- Client gửi số nguyên dương n > 10 đến server.
- Server phân tích n thành tích các số nguyên tố và gửi trả ngược lại client.
- Client xuất kết quả ra console.
Video hướng dẫn chi tiết:
2. Code tham khảo
2.1 Code phía Server
– Lắng nghe và xử lý kết nối từ máy khách:
- Chương trình lắng nghe trên một cổng 9555. Khi có máy khách kết nối đến, nó nhận dữ liệu từ máy khách, tính toán các ước số nguyên tố của số đó và gửi kết quả về lại cho máy khách.
– Tính toán các ước số nguyên tố của một số nguyên:
- Phương thức để tính toán các ước số nguyên tố của một số nguyên đã cho, sau đó trả về kết quả dưới dạng chuỗi.
public class Server { public final static int SERVER_PORT = 9555; public static void main(String[] args) { try { System.out.println("Waitting Connect..."); ServerSocket serverSocket = new ServerSocket(SERVER_PORT); Socket socket = serverSocket.accept(); boolean status = socket.isConnected(); if(status){ System.out.println("Client Connected!"); //Nhan du lieu tu client Scanner in = new Scanner(socket.getInputStream()); String inStr = in.nextLine(); String result = tichSNT(Integer.parseInt(inStr)); //Gui ket qua ve CLient PrintWriter out = new PrintWriter(socket.getOutputStream(),true); out.println(result); }else{ System.out.println("Connect Fail!"); } } catch (Exception e) { e.printStackTrace(); } } public static String tichSNT(int n){ int dem; int a[] = new int[100]; int index = 0; for(int i =2; i <= n ; i++){ dem=0; while(n % i ==0){ dem++; n = n / i; a[index] = i; index++; } } String result = ""; for(int i =0; i < index; i++){ result = result + a[i] +" "; } return result; } }
2.2 Code phía Client
– Kết nối đến máy chủ:
- Tạo một kết nối đến máy chủ sử dụng địa chỉ IP và cổng của máy chủ.
- Sau khi kết nối thành công, chương trình hiển thị thông báo “Connected!”.
– Nhập số nguyên từ người dùng:
- Yêu cầu người dùng nhập một số nguyên từ bàn phím.
- Nếu số nhập vào nhỏ hơn hoặc bằng 10, chương trình sẽ yêu cầu nhập lại cho đến khi số nhập vào lớn hơn 10.
– Gửi số nguyên đến máy chủ:
- Số nguyên được gửi đến máy chủ qua kết nối đã thiết lập.
– Nhận kết quả từ máy chủ:
- Chương trình nhận kết quả từ máy chủ thông qua kết nối.
- Kết quả được hiển thị ra màn hình.
public class Client { public final static int SERVER_PORT = 9555; public final static String SERVER_IP = "localhost"; public static void main(String[] args) { try { System.out.println("Connecting to Server"); Socket socket = new Socket(SERVER_IP, SERVER_PORT); boolean status = socket.isConnected(); if (status) { System.out.println("Connected!"); int n; Scanner sc = new Scanner(System.in); do { System.out.println("Nhap n: "); n = sc.nextInt(); } while (n <= 10); //Gui n len server PrintWriter out = new PrintWriter(socket.getOutputStream(), true); out.println(n); //Nhan du lieu tu server Scanner in = new Scanner(socket.getInputStream()); String result = ""; result = in.nextLine(); System.out.println(result); } else { System.out.println("Connect Fail!"); } } catch (Exception e) { e.printStackTrace(); } } }
Trên đây là chương trình Java có chức năng kết nối đến server và gửi một số nguyên để tính toán các ước số nguyên tố. Sau đó, nó nhận kết quả từ máy chủ và hiển thị kết quả lên màn hình.
Bài viết liên quan:
sắp xếp số nguyên tố về đầu dãy c++