private boolean broadcastRequest() {

		System.setProperty("java.net.preferIPv4Stack", "true");
		
		Enumeration<NetworkInterface> niEnum = null;
		try {
			niEnum = NetworkInterface.getNetworkInterfaces();
		} catch (SocketException e) {
			log.crit("Failed to get network interfaces for broadcast!");
			log.excp(e);
			return false;
		}

		// build packet
		byte[] request = QueryResponse.REQUEST_PHRASE.getBytes();		
		
		while (niEnum.hasMoreElements()) {
			NetworkInterface ni = niEnum.nextElement();
			log.debug("Found network interface:" + ni.getDisplayName());
			
			for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) {
				InetAddress addr = interfaceAddress.getBroadcast();
				
				if(addr == null) {
					continue;
				}
				
				log.info("Broadcast query request to " + addr);

				DatagramPacket packet = new DatagramPacket(request, request.length, addr, targetPort);
				
				try {
					socket.send(packet);
				} catch (IOException e) {
					log.err("Failed to broadcast query request!");
					log.excp(e);
				}
			}
		}
		
		return true;
	}