前言介绍:
凡是新知识都需要有个入门的案例,一个简单的输入输出就能解除你当前遇到的所有疑惑。不要总想着先学理论后学实战,新东方还135学理论,246学实战呢【800个床位不锈钢】。
环境需求:
1、jdk1.7以上【jdk1.7以下只能部分支持netty】
2、Netty-all-5.0【netty3.x 4.x 5每次的变化较大,接口类名也随着变化】
3、telnet 测试【可以现在你的win7机器上测试这个命令,用于链接到服务端的测试命令】
======================
TestNettyServerBaseDemo
src
com.itstack
ChildChannelHandler.java
NettyServer.java
======================
ChildChannelHandler.java
package com.itstack; import io.netty.channel.ChannelInitializer; import io.netty.channel.socket.SocketChannel; public class ChildChannelHandler extends ChannelInitializer<SocketChannel>{ @Override protected void initChannel(SocketChannel e) throws Exception { System.out.println("报告"); System.out.println("信息:有一客户端链接到本服务端"); System.out.println("IP:"+e.localAddress().getHostName()); System.out.println("Port:"+e.localAddress().getPort()); System.out.println("报告完毕"); } }
NettyServer .java
package com.itstack; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; public class NettyServer { public static void main(String[] args) { try { System.out.println("服务端开启等待客户端链接"); new NettyServer().bing(7397); } catch (Exception e) { e.printStackTrace(); } } public void bing(int port) throws Exception{ EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workGroup); b.channel(NioServerSocketChannel.class); b.option(ChannelOption.SO_BACKLOG, 1024); b.childHandler(new ChildChannelHandler()); // 绑定端口 ChannelFuture f = b.bind(port).sync(); // 等待服务端监听端口关闭 f.channel().closeFuture().sync(); } finally { // 优雅的退出 bossGroup.shutdownGracefully(); workGroup.shutdownGracefully(); } } }
测试运行:
1、启动NettyServer
2、控制台输出:
----------------------------------------------
服务端开启等待客户端链接
----------------------------------------------
3、开启DOS
4、输入telnet localhost 7397
5、控制台输出:
----------------------------------------------
报告
信息:有一客户端链接到本服务端
IP:localhost.localdomain
Port:7397
报告完毕