Diferencia entre revisiones de «Ejemplo Sencillo de TCP/IP con netty»

De ChuWiki
Saltar a: navegación, buscar
(Página creada con «__TOC__ [https://netty.io/ 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 ten...»)
 
(El Servidor)
Línea 12: Línea 12:
  
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
      EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)
+
EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)
        EventLoopGroup workerGroup = new NioEventLoopGroup();
+
EventLoopGroup workerGroup = new NioEventLoopGroup(); // (2)
        try {
+
            ServerBootstrap b = new ServerBootstrap(); // (2)
+
            b.group(bossGroup, workerGroup)
+
                    .channel(NioServerSocketChannel.class) // (3)
+
                    .childHandler(new ChannelInitializer<SocketChannel>() { // (4)
+
                        @Override
+
                        public void initChannel(SocketChannel ch) throws Exception {
+
                            ch.pipeline().addLast(serverHandler);
+
                        }
+
                    })
+
                    .option(ChannelOption.SO_BACKLOG, 128)          // (5)
+
                    .childOption(ChannelOption.SO_KEEPALIVE, true); // (6)
+
  
            // Bind and start to accept incoming connections.
+
try {
            ChannelFuture f = b.bind(port).sync(); // (7)
+
  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)
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[Categoría:Java]][[Categoría:Netty]]
 
[[Categoría:Java]][[Categoría:Netty]]

Revisión del 15:50 1 ago 2018

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)