class Alpha extends NetworkPeer implements AlphaServices, java.rmi.Remote { BetaServices other; public boolean odd(int n) throws java.rmi.RemoteException { System.out.println("You are asking if " + n + " is odd..."); if (n == 0) return false; else return other.even(n-1); } public void startAsLocalServer() { } public void startAsClientOf(java.rmi.Remote peer) throws java.rmi.RemoteException { ((BetaServices)peer).register(this); } public void register(BetaServices beta) throws java.rmi.RemoteException { this.other = beta; System.out.println(beta + " is registering into " + this); } public static void main(String[] args) throws /*Remote*/Exception { String portNumber = args[0], ownName = args[1]; Alpha server = new Alpha(); server.startAsNetworkServer(ownName, Integer.parseInt(portNumber)); System.out.println("Press a key if the other server is up and running..."); new java.io.BufferedReader(new java.io.InputStreamReader(System.in)).readLine(); String serverHostName = args[2], serverPortNumber = args[3], serverName = args[4]; server.startAsClientOf(server.locatePeer(serverHostName, Integer.parseInt(serverPortNumber), serverName)); System.out.println("Press a key when you want this to end ..."); new java.io.BufferedReader(new java.io.InputStreamReader(System.in)).readLine(); } }