package ch.epfl.lca.sc250;
import java.net.*;
import java.io.*;
import ch.epfl.lca.sc250.gui.*;
public class TCPClient {
private Socket sock;
private String targethost;
private int targetport;
private String name;
private BufferedReader inr;
private DataOutputStream outs;
private CnFrameTCP gui;
public static void main ( String[] args ) {
TCPClient tc = new TCPClient("in3sun23.epfl.ch", 13370, "x-way");
tc.join();
tc.loop();
tc.leave();
}
void loop ( ) {
boolean finished = false;
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
while ( !finished ) {
try {
String cmd = consoleReader.readLine();
if ( cmd.trim().equals("Bye Bye") ) {
finished = true;
}
write(cmd);
gui.appendText(cmd);
gui.appendText(read());
} catch ( IOException e ) {
System.err.println("IOError");
gui.appendText("IO-Error");
e.printStackTrace();
}
}
}
TCPClient ( String targethost, int targetport, String name ) {
gui = new CnFrameTCP("TCPClient");
this.targethost = targethost;
this.targetport = targetport;
this.name = name;
try {
sock = new Socket(targethost, targetport);
} catch ( UnknownHostException uhe ) {
System.out.println("Unknown host");
gui.appendText("Unknown host");
uhe.printStackTrace();
} catch ( IOException e ) {
System.err.println("IOError");
gui.appendText("IO-Error");
e.printStackTrace();
}
try {
outs = new DataOutputStream(sock.getOutputStream());
inr = new BufferedReader(new InputStreamReader(sock.getInputStream()));
} catch ( IOException e ) {
System.err.println("IOError");
gui.appendText("IO-Error");
e.printStackTrace();
}
}
public void join ( ) {
write("Hello: " + name + "\n");
String t = read();
System.out.println(t);
gui.appendText(t);
}
public void leave ( ) {
try {
sock.close();
} catch ( IOException e ) {
System.err.println("IOError");
gui.appendText("IO-Error");
e.printStackTrace();
}
System.out.println("Connection closed.");
gui.appendText("Connection closed.");
}
public void write ( String s ) {
try {
outs.writeBytes(s);
} catch ( IOException e ) {
System.err.println("IOError");
gui.appendText("IO-Error");
e.printStackTrace();
}
}
public String read ( ) {
try {
return inr.readLine();
} catch ( IOException e ) {
System.err.println("IOError");
gui.appendText("IO-Error");
e.printStackTrace();
return "";
}
}
}