// Add client // // Usage: AddClient [URL] // // The server hostname and port number are obtained from a web server. // If URL is not specified, a default URL is used. // // Uses RMI to communicate with a server which implements the Add interface // to add two integers. Uses KeyClient to establish an authenticated login // to the server. // // R. Perry, July 1998 import java.io.*; import java.rmi.*; import java.net.*; public class AddClient { public static void main( String args[]) throws Exception { String url = "http://acadia.ee.vill.edu/~perry/research/rsa/port"; if( args.length > 0) url = args[0]; System.out.println( "AddClient: using URL: " + url); URL u = new URL( url); BufferedReader in = new BufferedReader( new InputStreamReader( u.openStream())); // The server hostname and port number should be returned by the URL // String server = in.readLine(); int port = Integer.parseInt(in.readLine()); in.close(); // Initialize Key Client // String service = "AddServer"; KeyClient K = new KeyClient( server, port, service); // connect to service // String rmi = "rmi://" + server + ":" + port + "/" + service + "-" + K.getKey(); System.out.println( "AddClient: contacting " + rmi); Add A = (Add) Naming.lookup( rmi); // try to perform an addition - should fail since we didn't login yet // int x = 1, y = 1, z; z = A.add( x, y, 123); // junk sequence number System.out.println( "AddClient: " + service + " says " + x + " + " + y + " = " + z); // login - should get username:password interactively from the user... // String auth = "frodo:abc"; if( ! K.login( auth)) System.out.println( "AddClient: login() failed."); // perform some additions // z = A.add( x, y, K.seqnum()); System.out.println( "AddClient: " + service + " says " + x + " + " + y + " = " + z); ++x; ++y; z = A.add( x, y, 99999); // junk sequence number, should fail System.out.println( "AddClient: " + service + " says " + x + " + " + y + " = " + z); ++x; ++y; z = A.add( x, y, K.seqnum()); System.out.println( "AddClient: " + service + " says " + x + " + " + y + " = " + z); } }