public void run() {
            DatagramSocket locateConnection;
            DatagramPacket packet;

            try {
                locateConnection = new DatagramSocket();
                locateConnection.setSoTimeout(timeout);
                
                packet = new DatagramPacket("KAI_CLIENT_DISCOVER;".getBytes(), 0, 20, InetAddress.getByName(address), 34522);
                locateConnection.send(packet);
            } catch(Exception ioe) {
                System.out.println("EngineFinder run:"+ioe);
                return;
            }

            packet.setData(new byte[UDP_BUFFER_SIZE]);

            while(true) {
                try {
                    locateConnection.receive(packet);
                    if(new String(packet.getData(), 0, packet.getLength()).startsWith("KAI_CLIENT_ENGINE_HERE;")) {
                        String address = packet.getAddress().getHostAddress();
                        if(!engines.contains(address)) {
                            engines.add(address);
                            _logger.info("Engine found at " + address);
                        }
                    }
                } catch (SocketTimeoutException ste) {
                    System.out.println("EngineFinder:"+ste);
                    break;
                } catch (IOException ioe) {
                    System.out.println("EnginFinder:"+ioe);
                }
            }
        }