       import java.rmi.*;
       import java.rmi.server.*;

       public class client {
           private int compare(String tr,String te) {
           int i=0,n1,n2,j;

                 if(tr==null || te==null) return 0;
                 n1=tr.length();
                 n2=te.length();
                 if(n1!=n2) return 0;
                 for(j=0;j<n1;j++)
                         if(tr.charAt(j)!=te.charAt(j)) break;
                 if(j==n1) return 1;
                 return 0;
           }

           public static void main(String args[])
           {
               String message=null;
               // Create and install the security manager
               System.setSecurityManager(new RMISecurityManager());

               try {
                  
                   client tmp= new client();
 
                   System.out.println("Client:");
                   String url = "//" + args[0] + "/~stefanos/rmi/simple";

                   // lookup  server
                   System.out.println("Trying to lookup remote object:");
                   simple echo = (simple) java.rmi.Naming.lookup(url);

                   // call remote method
                   if(tmp.compare(args[1],"vote")==1) 
                       message = echo.vote(args[2],args[3]);
                   else if(tmp.compare(args[1],"display_candidates")==1) {
                        message = echo.list_candidates(); 
                   } else if(tmp.compare(args[1],"results")==1)
                       message = echo.results(args[2]);
                   else {
                       System.out.println("Unknown Command");
                        
                   }

                   // print message returned from server
                   System.out.print("Message from  Server: ");
                   System.out.println("\t" + message + "\n");

               } catch (Exception e) {
                   System.out.println("Client: an exception occurred: " +
                                      e.getMessage());
                   e.printStackTrace();
               }
           }
       } 
