chapters.mdc.NumberCruncherClient Maven / Gradle / Ivy
/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 1999-2015, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package chapters.mdc;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.rmi.Naming;
import java.rmi.RemoteException;
/**
* NumberCruncherClient is a simple client for factoring integers. A
* remote NumberCruncher is contacted and asked to factor an
* integer. The factors returned by the {@link NumberCruncherServer}
* are displayed on the screen.
* */
public class NumberCruncherClient {
public static void main(String[] args) {
if (args.length == 1) {
try {
String url = "rmi://" + args[0] + "/Factor";
NumberCruncher nc = (NumberCruncher) Naming.lookup(url);
loop(nc);
} catch (Exception e) {
e.printStackTrace();
}
} else {
usage("Wrong number of arguments.");
}
}
static void usage(String msg) {
System.err.println(msg);
System.err.println("Usage: java chapters.mdc.NumberCruncherClient HOST\n" + " where HOST is the machine where the NumberCruncherServer is running.");
System.exit(1);
}
static void loop(NumberCruncher nc) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int i = 0;
while (true) {
System.out.print("Enter a number to factor, '-1' to quit: ");
try {
i = Integer.parseInt(in.readLine());
} catch (Exception e) {
e.printStackTrace();
}
if (i == -1) {
System.out.print("Exiting loop.");
return;
} else {
try {
System.out.println("Will attempt to factor " + i);
int[] factors = nc.factor(i);
System.out.print("The factors of " + i + " are");
for (int k = 0; k < factors.length; k++) {
System.out.print(" " + factors[k]);
}
System.out.println(".");
} catch (RemoteException e) {
System.err.println("Could not factor " + i);
e.printStackTrace();
}
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy