Write a Java program to accept a number through client terminal, send it to the Server, Server calculates its factors and sends it to the client.
Server.java
import java.io.*;
import java.net.*;
import java.util.ArrayList;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(5000);
System.out.println("Server started. Waiting for client...");
Socket socket = serverSocket.accept();
System.out.println("Client connected: " + socket.getInetAddress());
// Streams for communication
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// Read number from client
int num = Integer.parseInt(in.readLine());
ArrayList<Integer> factors = new ArrayList<>();
// Calculate factors
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
factors.add(i);
}
}
// Send factors to client
out.println("Factors of " + num + ": " + factors);
// Close connections
in.close();
out.close();
socket.close();
serverSocket.close();
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
Client.java
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 5000);
System.out.println("Connected to server.");
Scanner sc = new Scanner(System.in);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// Accept number from user
System.out.print("Enter a number: ");
int num = sc.nextInt();
// Send number to server
out.println(num);
// Receive and display factors from server
String response = in.readLine();
System.out.println(response);
// Close connections
sc.close();
in.close();
out.close();
socket.close();
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}