Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.sample.netty.socket.client; import com.sample.netty.socket.utils.MessageDecoder; import com.sample.netty.socket.utils.MessageEncoder; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; /** * * @author Vitor */ public class Client { public static void main(String[] args) throws Exception { String host = "localhost"; int port = 8080; EventLoopGroup workerGroup = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); b.group(workerGroup); b.channel(NioSocketChannel.class); b.option(ChannelOption.SO_KEEPALIVE, true); b.handler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(new MessageDecoder(), new ClientHandlerInbound()); ch.pipeline().addLast(new MessageEncoder(), new ClientHandlerOutbound()); } }); ChannelFuture f = b.connect(host, port).sync(); f.channel().writeAndFlush( String.format("Usurio = '%s'", System.getProperties().getProperty("user.name"))); f.channel().closeFuture().sync(); } finally { workerGroup.shutdownGracefully(); } } }