Search in sources :

Example 1 with ClientDiscoveryHandler

use of com.esotericsoftware.kryonet.ClientDiscoveryHandler in project ProjektGG by eskalon.

the class ServerDiscoveryHandler method discoverHosts.

/**
 * @param port
 *            The port to listen on.
 * @param listener
 *            The listener that is informed when a server is found.
 */
public void discoverHosts(int port, HostDiscoveryListener<P> listener) {
    Preconditions.checkArgument(port > 0, "the port must be valid");
    Preconditions.checkNotNull(listener, "the listener cannot be null");
    Client c = new Client();
    c.getKryo().register(packetClass);
    c.setDiscoveryHandler(new ClientDiscoveryHandler() {

        @Override
        public DatagramPacket onRequestNewDatagramPacket() {
            byte[] buffer = new byte[1024];
            return new DatagramPacket(buffer, buffer.length);
        }

        @Override
        public void onDiscoveredHost(DatagramPacket datagramPacket) {
            Object obj = c.getKryo().readClassAndObject(new Input(datagramPacket.getData()));
            if (packetClass.isInstance(obj))
                listener.onHostDiscovered(datagramPacket.getAddress().getHostAddress(), packetClass.cast(obj));
        }

        @Override
        public void onFinally() {
        }
    });
    c.discoverHosts(port, timeout);
    c.close();
}
Also used : Input(com.esotericsoftware.kryo.io.Input) DatagramPacket(java.net.DatagramPacket) Client(com.esotericsoftware.kryonet.Client) ClientDiscoveryHandler(com.esotericsoftware.kryonet.ClientDiscoveryHandler)

Aggregations

Input (com.esotericsoftware.kryo.io.Input)1 Client (com.esotericsoftware.kryonet.Client)1 ClientDiscoveryHandler (com.esotericsoftware.kryonet.ClientDiscoveryHandler)1 DatagramPacket (java.net.DatagramPacket)1