package Client; import CLI.CLI; import GUI.GUI; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; public class Client { public static Socket socket = null; String ipAddress; String portNumber; public static DataInputStream inputStream; public static DataOutputStream outputStream; public static GUI ui; public static String name; public Client () { ui = new GUI("Client"); this.init(); this.startCommunication(); } private void init() { ipAddress = ui.read("Input IP Address of Server", "localhost"); portNumber = ui.read("Input Port Number of Server", "3000"); name = ui.read("Enter your name :"); try { socket = new Socket(ipAddress, Integer.parseInt(portNumber)); inputStream = new DataInputStream(socket.getInputStream()); outputStream = new DataOutputStream(socket.getOutputStream()); // send client name and some other imp details if required outputStream.writeUTF(name); ui.write("Client Connected with Server on "+ipAddress+":"+portNumber); } catch (IOException e) { Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, e); ui.write(e.getMessage()); } } private void startCommunication() { Thread readFromServer = new Thread(new ReadFromServer()); Thread writeToServer = new Thread(new WriteToServer()); readFromServer.start(); writeToServer.start(); try { // wait for threads to die readFromServer.join(); writeToServer.join(); } catch (InterruptedException e) { Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, e); } // after all threads dies - cleanup try { outputStream.close(); inputStream.close(); socket.close(); } catch (IOException e) { Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, e); } } }