private String sendDataOut(String key, String data) throws TimeoutException {
		ClientInfo ci = new ClientInfo();
		ci.setClientKey(key);

		PooledBlockingClient pbc = null;

		try {
			pbc = blockingClientPool.getBlockingClient(ci);
			if (pbc == null) {
				throw new TimeoutException("sdo: we do not have any client[pbc] to connect to server!");
			}

			BlockingClient bc = pbc.getBlockingClient();
			if (bc == null) {
				throw new TimeoutException("we do not have any client[bc] to connect to server!");
			}

			bc.sendBytes(data, charset);

			return bc.readCRLFLine();
		} catch (IOException e) {
			if (pbc != null) {
				logger.log(Level.WARNING, "We had an ioerror will close client! " + e, e);
				pbc.close();
			}
			throw new TimeoutException("We had ioerror " + e);
		} finally {
			if (pbc != null) {
				blockingClientPool.returnBlockingClient(pbc);
			}
		}
	}