public void connect() {
		
		new Thread(new Runnable() {

			@Override
			public void run() {
				
				if(isReconnectWorkerWorking()) {
					reconnectWorker.shutdownNow();
				}
				
				preConnect();
				
				sendNewInfo("Connecting to: " + host + ":" + port);
				
				if(echoSocket == null) {					
					echoSocket = new Socket();					
				}
				else {					
					disconnect();
					echoSocket = new Socket();				
				}
				try {					
					echoSocket.connect(new InetSocketAddress(host, port), 5000);					
				} catch (UnknownHostException e) {
					
					sendNewInfo("Don't know about host: " + host + ":" + port);			
					resetConnection();
		        	
		        } catch (IOException e) {   
		        	
					sendNewInfo("Couldn't get I/O for the connection to: " + host + ":" + port);        	
					resetConnection();
		        	
		        }
				
				if(!echoSocket.isConnected()) {
					resetConnection();
					return;
				}

				sendNewInfo("Connected");
				
				try {
					
					sockObjOut = new ObjectOutputStream(echoSocket.getOutputStream());
					sockObjOut.flush();
					sockObjIn = new ObjectInputStream(echoSocket.getInputStream());
					
				} catch (IOException e) {
					e.printStackTrace();
				}
				
				setConnectionChecker();
				
				postConnect();
				
			}
			
		}).start();
		
		//WindowController.getSendTextArea().setDisable(false);
		//WindowController.getSubmitButton().setDisable(false);
	}