import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/**
 * Client Application
 *
 */
public class Client {
	public static void main(String[] args){
		if(args.length==4){
			String serverAddress=args[0];
			int serverPort=Integer.parseInt(args[1]);
			String selfIdentifier=args[2];
			String targetIdentifier=args[3];
			
			try {
				//connect server
				Socket socket=new Socket(serverAddress, serverPort);
				//obtain input/output streams
				BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
				PrintWriter out=new PrintWriter(socket.getOutputStream(), true);
				//send selfIdentifier
				out.println(selfIdentifier);
				//send targetIdentifier
				out.println(targetIdentifier);
				
				//initialize GUI (this automatically runs in a new thread)
				ClientGUI gui=new ClientGUI(selfIdentifier,out);
				
				//start receiving message
				String msg;
				while(true){
					if(in.ready()){
						msg=in.readLine();
						if(gui!=null){
							gui.appendReceivedMessage(msg);
						}
					}
				}
				
				
			} catch (UnknownHostException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
			
		}else{
			System.out.println("USAGE: java Client serverIP|serverHostName serverPort selfIdentifier targetIdentifier");
		}
	}

}

