Ejemplo Sencillo de TCP/IP con netty

De ChuWiki
Revisión del 15:50 1 ago 2018 de Chudiang (Discusión | contribuciones) (El Servidor)

Saltar a: navegación, buscar

Contenido

Netty es una librería Java que nos facilita todo el uso de sockets. Está pensada para ser eficiente y consumir pocos recursos, además de tener ya implementados bastantes protocolos estándar, ahorrándonos el trabajo de hacerlo a nosotros o buscar otras librerías.

Veamos aquí un ejemplo básico de cómo hacer un socket TCP/IP. Haremos un servidor que admitirá varios clientes, cada cliente enviará un texto periodicamente y el servidor se lo reenviará al resto de clientes. Lo haremos con lo básico de Netty, sin utilizar ninguno de los encoder o decoder que netty nos proporiciona.

Aquí tienes el código de ejemplo de socket tcp/ip con netty

El Servidor

En netty el código para abrir un socket servidor TCP/IP es más o menos siempre el mismo, copy-paste y lo explicamos un poco

EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)
EventLoopGroup workerGroup = new NioEventLoopGroup(); // (2)

try {
   ServerBootstrap b = new ServerBootstrap(); // (3)
   b.group(bossGroup, workerGroup)
      .channel(NioServerSocketChannel.class) // (4)
      .childHandler(new ChannelInitializer<SocketChannel>() { // (5)
          @Override
          public void initChannel(SocketChannel ch) throws Exception { // (6)
             ch.pipeline().addLast(serverHandler); // (7)
          }
      })
      .option(ChannelOption.SO_BACKLOG, 128)          // (8)
      .childOption(ChannelOption.SO_KEEPALIVE, true); // (9)
       
   ChannelFuture f = b.bind(port).sync(); // (10)

   f.channel().closeFuture().sync(); // (11)