[Socket] Phân tích n thành tích các số nguyên tố Java

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

tính tổng các số nguyên tố nhỏ hơn n c++

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ố nguyên tố cùng nhau c++

sắp xếp số nguyên tố về đầu dãy c++

chuyển một số sang hệ Hexa-Decimal java socket

kiểm tra n được gửi từ Client có phải là số hoàn hảo

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em