Diferencia entre revisiones de «Ejemplo multicast con Netty»

De ChuWiki
Saltar a: navegación, buscar
(Página creada con «__TOC__ Vamos con un ejemplo multicast en netty. Aunque he mirado el que hay por google, veo que muchas de las opciones que pone no sirven aparentemente para nada, así qu...»)
(Sin diferencias)

Revisión del 16:38 7 ago 2018

Vamos con un ejemplo multicast en netty. Aunque he mirado el que hay por google, veo que muchas de las opciones que pone no sirven aparentemente para nada, así que el de aquí es con lo mínimo que he visto imprescindible para hacerlo funcionar. Aquí tienes el ejemplo de multicast con netty

El servidor (el que escucha)

Veamos el código del que se pone a a escucha, lo he llamado servidor, pero no tiene mucho sentido, digo yo. El código es este

        NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress.getByName("127.0.0.1"));  // (1)

        InetSocketAddress groupAddress = new InetSocketAddress(
                "239.255.27.1", 1234);  //(2)

        EventLoopGroup group = new NioEventLoopGroup();
        Bootstrap b = new Bootstrap();
        b.group(group)
            .channelFactory(new ChannelFactory<NioDatagramChannel>() {
                @Override
                public NioDatagramChannel newChannel() {
                    return new NioDatagramChannel(InternetProtocolFamily.IPv4);
                }
            })
//            .channel(NioDatagramChannel.class)
            .handler(new ChannelInitializer<NioDatagramChannel>() {
                @Override
                protected void initChannel(NioDatagramChannel ch) throws Exception {
                    ch.pipeline().addLast(new ServerHandler());
                }
            })
            .option(ChannelOption.SO_REUSEADDR,true);

        NioDatagramChannel ch = (NioDatagramChannel)b.bind(groupAddress.getPort()).sync().channel();
        ch.joinGroup(groupAddress,ni).sync();

        ch.closeFuture().await();
<\syntaxhighlight>

Vamos por partes:

* (1) Necesitamos la interfaz de red por la que vamos a escuchar. Netty no admite ponernos a la escucha de todas las interfaces de red de forma fácil (hay un "workaround" que comento más tarde). Así que cogemos una de ellas por su IP. Como 127.0.0.1 existe en todos los ordenadores (localhost) cogemos esa para que funcione el ejemplo, pero esto obliga a que el que emite lo haga dentro del mismo pc y por esa interfaz de red. Si quieres puedes poner tu IP de red y así escuchas cosas del exterior.
* (2) Una IP de multicast y puerto, para usarla.

[[Categoría:Java]][[Categoría:Netty]]