Netty 5に基づく.0導入事例1のNettyServer
2602 ワード
前言:
新しい知識には入門のケースが必要で、簡単な入出力で現在出会っているすべての疑問を解消することができます.先に理論を学んでから実戦を学ぶことを考えないでください.新東方はまだ135理論を学んで、246は実戦を学びます.
環境要件:
1、jdk1.7以上【jdk 1.7以下はnettyのみ一部サポート】
2、Netty-all-5.0【netty 3.x 4.x 5は毎回の変化が大きく、インタフェースクラス名も変化する】
3、telnetテスト【win 7マシンでこのコマンドをテストできます.サービス側のテストコマンドにリンクします】
======================
TestNettyServerBaseDemo
src
com.itstack
ChildChannelHandler.java
NettyServer.java
======================
ChildChannelHandler.java
NettyServer
.java
テスト実行:
1、NettyServerの起動
2、コンソール出力:
----------------------------------------------
サービス側オープン待機クライアントリンク
----------------------------------------------
3、DOSを開く
4、telnet localhost 7397を入力
5、コンソール出力:
----------------------------------------------
レポート情報:クライアントが本サービス端末IP:localhostにリンクする.localdomain Port:7397報告完了
新しい知識には入門のケースが必要で、簡単な入出力で現在出会っているすべての疑問を解消することができます.先に理論を学んでから実戦を学ぶことを考えないでください.新東方はまだ135理論を学んで、246は実戦を学びます.
環境要件:
1、jdk1.7以上【jdk 1.7以下はnettyのみ一部サポート】
2、Netty-all-5.0【netty 3.x 4.x 5は毎回の変化が大きく、インタフェースクラス名も変化する】
3、telnetテスト【win 7マシンでこのコマンドをテストできます.サービス側のテストコマンドにリンクします】
======================
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{
@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報告完了