import java.io.BufferedReader; import java.io.InputStreamReader; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class ChatClientImpl extends UnicastRemoteObject implements ChatClient { private static ChatServer server; private static int msgId = 0; public ChatClientImpl () throws RemoteException { super (); } public void send (String text) throws RemoteException { System.out.println (text); } public static void main (String[] args) { String name = ""; try { server = (ChatServer) Naming.lookup ("//localhost:1099/ChatServer"); } catch (Exception e1) { e1.printStackTrace(); } do { System.out.print ("Enter your name: "); name = getUserInput (); connect (name); } while (name.length() == 0); while (true) { String text = getUserInput (); if (text.equalsIgnoreCase (":quit")) { disconnect (name); break; } sendMsg (name, text); } /* Goodbye! */ } private static void sendMsg (String name, String text) { try { server.send(name, text); } catch (RemoteException e) { e.printStackTrace(); } } private static void disconnect (String name) { try { server.disconnect(name); } catch (RemoteException e) { e.printStackTrace(); } } private static void connect (String name) { try { server.connect (name, new ChatClientImpl ()); } catch (RemoteException e) { e.printStackTrace(); } } private static String getUserInput () { BufferedReader keyboard = new BufferedReader (new InputStreamReader (System.in)); String userInput = ""; try { userInput = keyboard.readLine (); } catch (Exception e) { e.printStackTrace (); } return userInput; } }