@Override
    public void run() {
        logger.debug("=>Iniciando comunicacao com o servidor ");
        logarMensagem("=>Iniciando comunicacao com o servidor ");
        long startTime = System.currentTimeMillis();
        String msgRetorno;

        try {

            //estabelece a conexao
            communicSocket = new Socket();
            SocketAddress sockaddr = new InetSocketAddress(ip, port);
            if (isTimeoutEnabled) {
                communicSocket.connect(sockaddr, timeout);//define de timeout
            } else {
                communicSocket.connect(sockaddr);
            }
            for (int i = 0; i < qtdMsg; i++) {

                Object objToServer = clienteCommand.buildMessage(limiteFibonacci, codigoThread, identificador);
                enviaParaServidor(objToServer);

                Object retorno = recebeDoServidor();

                if (retorno != null) {
                    msgRetorno = clienteCommand.parseMensagem(retorno);
                    logger.info(retorno.toString());
                    logarMensagem(retorno.toString());
                } else {
                    logger.error("Servidor retornou null!");
                    logarMensagem("Servidor retornou null!");
                }

            }
        } catch (IOException ex) {
            logger.error("Erro na conexao do cliente com o servidor", ex);
            logarMensagem("Erro na conexao do cliente com o servidor");
        } catch (ClassNotFoundException ex) {
            logarMensagem("Erro na conexao do cliente com o servidor durante a leitura da classe do objeto");
            logger.error("Erro na conexao do cliente com o servidor durante a leitura da classe do objeto", ex);
        }
        logger.info("Terminando conexao com o servidor!");
        logarMensagem("Terminando conexao com o servidor!");
        try {
            fecharConexao(); //terminou
        } catch (IOException ex) {
            logger.error("Erro na conexao do cliente com o servidor", ex);
            logarMensagem("Erro na conexao do cliente com o servidor");
        }
        long endtime = System.currentTimeMillis();

        long totalTime = endtime - startTime;
        CalculoTempo.addNovoTempo(totalTime);
        logger.info("Tempo decorrido no cliente " + identificador + " na thread " + codigoThread + " eh: " + totalTime + " ms");
        logarMensagem("Tempo decorrido no cliente " + identificador + " na thread " + codigoThread + " eh: " + totalTime + " ms");
    }