package com.coder.client; import java.util.logging.Level; import java.util.logging.Logger; import com.coder.client.LoginDialog.LoginDialogAction; import com.coder.server.CoderServer; import zutil.log.LogUtil; public class CoderClient extends Thread{ public static final Logger logger = LogUtil.getLogger(); private String url; private int port; private Session session; private ClientWindow window; public CoderClient(String url, int port) { this.url = url; this.port = port; this.window = new ClientWindow("CoderClient"); super.start(); } public void run(){ String username = ""; while(true){ this.session = Session.setupConnection(url, port); if(session == null){ logger.info("Could not setup a connection to " + url + ":" + port); continue; } LoginDialog loginDialog = new LoginDialog(username, null); loginDialog.setVisible(true); if(loginDialog.getAction() == LoginDialogAction.CANCEL){ logger.info("Login dialog closed or canceled by the user. terminating."); break; } username = loginDialog.getUsername(); String password = loginDialog.getPassword(); boolean authenticated = session.authenticate(username, password); if(!authenticated){ System.out.println("Authentication failed"); continue; } session.start(); this.window.setVisible(true); try {Thread.sleep(1000);} catch (InterruptedException e) {} while(session.isConnected()){ Thread.yield(); } logger.info("The socket was closed. terminating."); this.window.setVisible(false); Thread.yield(); } System.exit(0); } public static void main(String[] args){ int port = CoderServer.SERVER_PORT; new CoderClient("127.0.0.1", port); } }