/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.APL file. */ package examples; import java.rmi.Remote; import java.rmi.server.UnicastRemoteObject; import java.rmi.RemoteException; import java.rmi.Naming; import java.util.Vector; import java.io.*; /** 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. <p>See <a href=doc-files/NumberCruncherClient.java>source</a> code of <code>NumberCruncherClient</code> for more details. <pre> <b>Usage:</b> java org.apache.log4j.examples.NumberCruncherClient HOST where HOST is the machine where the NumberCruncherServer is running </pre> <p>Note that class files for the example code is not included in any of the distributed log4j jar files. You will have to add the directory <code>/dir-where-you-unpacked-log4j/classes</code> to your classpath before trying out the examples. @author Ceki Gülcü */ 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 org.apache.log4j.examples.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(); } } } } }