Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8e896d8

Browse files
committed
add * [自定义基于换行的解码器](netty4-demos/src/main/java/com/waylau/java/demo/decoder)
* [TCP客户端](netty4-demos/src/main/java/com/waylau/java/TcpClient.java)
1 parenteed2417 commit8e896d8

File tree

7 files changed

+135
-16
lines changed

7 files changed

+135
-16
lines changed

‎README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,6 @@ Demos of [Netty 4.x User Guide](https://github.com/waylau/netty-4-user-guide)
2323
*[Netty实现无连接协议Echo服务器、客户端](netty4-demos/src/main/java/com/waylau/netty/demo/echo)
2424
*[Java线程池示例](netty4-demos/src/main/java/com/waylau/java/demo/concurrent/ThreadPoolExecutorDemo.java)
2525
*[Java Reactor示例](netty4-demos/src/main/java/com/waylau/java/demo/reactor)
26+
*[自定义基于换行的解码器](netty4-demos/src/main/java/com/waylau/java/demo/decoder)
27+
*[TCP客户端](netty4-demos/src/main/java/com/waylau/java/TcpClient.java)
2628
* ...

‎netty4-demos/src/main/java/com/waylau/netty/App.java‎

Lines changed: 0 additions & 13 deletions
This file was deleted.

‎netty4-demos/src/main/java/com/waylau/netty/TcpClient.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
importjava.net.Socket;
66

77
/**
8-
*测试用的TCP客户端
8+
* TCPClient.
99
*
10-
* @author waylau.com
11-
* @date 2015-2-26
10+
* @since 1.0.0 2019年12月12日
11+
* @author <a href="https://waylau.com">Way Lau</a>
1212
*/
1313
publicclassTcpClient {
1414

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* Welcome to https://waylau.com
3+
*/
4+
packagecom.waylau.netty.demo.decoder;
5+
6+
importio.netty.handler.codec.LineBasedFrameDecoder;
7+
8+
/**
9+
* My LineBasedFrameDecoder.
10+
*
11+
* @since 1.0.0 2019年12月12日
12+
* @author <a href="https://waylau.com">Way Lau</a>
13+
*/
14+
publicclassMyLineBasedFrameDecoderextendsLineBasedFrameDecoder {
15+
16+
privatefinalstaticintMAX_LENGTH =1024;// 帧的最大长度
17+
18+
publicMyLineBasedFrameDecoder() {
19+
super(MAX_LENGTH);
20+
}
21+
22+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* Welcome to https://waylau.com
3+
*/
4+
packagecom.waylau.netty.demo.decoder;
5+
6+
importio.netty.channel.ChannelInitializer;
7+
importio.netty.channel.socket.SocketChannel;
8+
importio.netty.handler.codec.string.StringDecoder;
9+
10+
/**
11+
* My LineBasedFrameDecoder ChannelInitializer。
12+
*
13+
* @since 1.0.0 2019年12月12日
14+
* @author <a href="https://waylau.com">Way Lau</a>
15+
*/
16+
publicclassMyLineBasedFrameDecoderChannelInitializerextendsChannelInitializer<SocketChannel> {
17+
18+
@Override
19+
protectedvoidinitChannel(SocketChannelchannel) {
20+
// 基于换行符号
21+
channel.pipeline().addLast(newMyLineBasedFrameDecoder());
22+
23+
// 解码转String
24+
channel.pipeline().addLast(newStringDecoder());
25+
26+
// 自定义ChannelHandler
27+
channel.pipeline().addLast(newMyLineBasedFrameDecoderServerHandler());
28+
}
29+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/**
2+
* Welcome to https://waylau.com
3+
*/
4+
packagecom.waylau.netty.demo.decoder;
5+
6+
importio.netty.bootstrap.ServerBootstrap;
7+
importio.netty.channel.ChannelFuture;
8+
importio.netty.channel.ChannelOption;
9+
importio.netty.channel.EventLoopGroup;
10+
importio.netty.channel.nio.NioEventLoopGroup;
11+
importio.netty.channel.socket.nio.NioServerSocketChannel;
12+
13+
/**
14+
* My LineBasedFrameDecoder Server。
15+
*
16+
* @since 1.0.0 2019年12月12日
17+
* @author <a href="https://waylau.com">Way Lau</a>
18+
*/
19+
publicclassMyLineBasedFrameDecoderServer {
20+
21+
publicstaticintDEFAULT_PORT =8023;
22+
23+
publicstaticvoidmain(String[]args)throwsException {
24+
intport =DEFAULT_PORT;
25+
26+
// 多线程事件循环器
27+
EventLoopGroupbossGroup =newNioEventLoopGroup(1);// boss
28+
EventLoopGroupworkerGroup =newNioEventLoopGroup();// worker
29+
30+
try {
31+
// 启动NIO服务的引导程序类
32+
ServerBootstrapb =newServerBootstrap();
33+
34+
b.group(bossGroup,workerGroup)// 设置EventLoopGroup
35+
.channel(NioServerSocketChannel.class)// 指明新的Channel的类型
36+
.childHandler(newMyLineBasedFrameDecoderChannelInitializer())// 指定ChannelHandler
37+
.option(ChannelOption.SO_BACKLOG,128)// 设置的ServerChannel的一些选项
38+
.childOption(ChannelOption.SO_KEEPALIVE,true);// 设置的ServerChannel的子Channel的选项
39+
40+
// 绑定端口,开始接收进来的连接
41+
ChannelFuturef =b.bind(port).sync();
42+
43+
System.out.println("MyLineBasedFrameDecoderServer已启动,端口:" +port);
44+
45+
// 等待服务器 socket 关闭 。
46+
// 在这个例子中,这不会发生,但你可以优雅地关闭你的服务器。
47+
f.channel().closeFuture().sync();
48+
}finally {
49+
50+
// 优雅的关闭
51+
workerGroup.shutdownGracefully();
52+
bossGroup.shutdownGracefully();
53+
}
54+
55+
}
56+
57+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* Welcome to https://waylau.com
3+
*/
4+
packagecom.waylau.netty.demo.decoder;
5+
6+
importio.netty.channel.ChannelHandlerContext;
7+
importio.netty.channel.ChannelInboundHandlerAdapter;
8+
9+
/**
10+
* My LineBasedFrameDecoder ServerHandler。
11+
*
12+
* @since 1.0.0 2019年12月12日
13+
* @author <a href="https://waylau.com">Way Lau</a>
14+
*/
15+
publicclassMyLineBasedFrameDecoderServerHandlerextendsChannelInboundHandlerAdapter {
16+
17+
@Override
18+
publicvoidchannelRead(ChannelHandlerContextctx,Objectmsg) {
19+
// 接收msg消息,此处已经无需解码了
20+
System.out.println("Client -> Server: " +msg);
21+
}
22+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp