package com.jun.plugin.nio.netty.demo5;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.codec.string.StringEncoder;
import io.netty.handler.timeout.IdleStateHandler;

/**
 * 
* Title: NettyClientDemo5
* Description: Netty客户端  心跳测试
* Version:1.0.0  
* @author pancm
* @date 2017年9月21日
 */
public class NettyClientDemo5 {
	  public static String host = "127.0.0.1";  //ip地址
	    public static int port = 5678;			//端口
	    /// 通过nio方式来接收连接和处理连接   
	    private static EventLoopGroup group = new NioEventLoopGroup(); 
	    private static  Bootstrap b = new Bootstrap();
	    private static Channel ch=null;
  
	    /**
		 * Netty创建全部都是实现自AbstractBootstrap。
		 * 客户端的是Bootstrap，服务端的则是ServerBootstrap。
		 **/
	    public static void main(String[] args) throws InterruptedException, IOException { 
	        	 b.group(group)  
	             .channel(NioSocketChannel.class)  
	             .option(ChannelOption.TCP_NODELAY,true)  
	             .handler(new ChannelInitializer<SocketChannel>() {  
	                 @Override  
	                 public void initChannel(SocketChannel ch) throws Exception {  
	                     ChannelPipeline p = ch.pipeline();  
	                     //入参说明: 读超时时间、写超时时间、所有类型的超时时间、时间格式
	                     //因为服务端设置的超时时间是5秒，所以设置4秒
	                     p.addLast( new IdleStateHandler(0, 4, 0, TimeUnit.SECONDS));  
	                     p.addLast( new StringDecoder());  
	                     p.addLast( new StringEncoder());  
	                     p.addLast(new NettyClientHandlerDemo5());   //绑定自定义业务 
	                 }  
	             });  
	            // 连接服务端
	            ch = b.connect(host, port).sync().channel();
	            System.out.println("客户端成功启动...");
	            //发送消息
//	            star();
	    }
	    
	    public static void star() throws IOException{
	    	String str="你好啊，Netty服务端";
	        ch.writeAndFlush(str); 
	    	System.out.println("客户端发送数据:"+str);
	   } 
}
