Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Kwan的解忧杂货铺@新空间代码工作室
netty-demo
提交
77c126bf
N
netty-demo
项目概览
Kwan的解忧杂货铺@新空间代码工作室
/
netty-demo
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
netty-demo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
77c126bf
编写于
4月 27, 2023
作者:
Kwan的解忧杂货铺@新空间代码工作室
🐭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:ceshi pipeline
上级
7971cb27
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
137 addition
and
0 deletion
+137
-0
src/main/java/com/kwan/shuyu/heima/netty_06_pipeline/Client.java
...n/java/com/kwan/shuyu/heima/netty_06_pipeline/Client.java
+42
-0
src/main/java/com/kwan/shuyu/heima/netty_06_pipeline/Server.java
...n/java/com/kwan/shuyu/heima/netty_06_pipeline/Server.java
+82
-0
src/main/java/com/kwan/shuyu/heima/netty_06_pipeline/Student.java
.../java/com/kwan/shuyu/heima/netty_06_pipeline/Student.java
+13
-0
未找到文件。
src/main/java/com/kwan/shuyu/heima/netty_06_pipeline/Client.java
0 → 100644
浏览文件 @
77c126bf
package
com.kwan.shuyu.heima.netty_06_pipeline
;
import
io.netty.bootstrap.Bootstrap
;
import
io.netty.channel.ChannelInitializer
;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.channel.socket.nio.NioSocketChannel
;
import
io.netty.handler.codec.string.StringEncoder
;
import
java.net.InetSocketAddress
;
/**
* 客户端
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/4/23 16:42
*/
public
class
Client
{
public
static
void
main
(
String
[]
args
)
throws
InterruptedException
{
//1.启动类
new
Bootstrap
()
// 2.添加 EventLoop
.
group
(
new
NioEventLoopGroup
())
//3.选择客户端channel实现
.
channel
(
NioSocketChannel
.
class
)
// 4.添加处理器
.
handler
(
new
ChannelInitializer
<
NioSocketChannel
>()
{
@Override
//在连接建立后被调用
protected
void
initChannel
(
NioSocketChannel
ch
)
throws
Exception
{
ch
.
pipeline
().
addLast
(
new
StringEncoder
());
}
})
//连接到服务器
.
connect
(
new
InetSocketAddress
(
"localhost"
,
8080
))
.
sync
()
.
channel
()
//发送数据
.
writeAndFlush
(
"hello world"
)
;
}
}
\ No newline at end of file
src/main/java/com/kwan/shuyu/heima/netty_06_pipeline/Server.java
0 → 100644
浏览文件 @
77c126bf
package
com.kwan.shuyu.heima.netty_06_pipeline
;
import
io.netty.bootstrap.ServerBootstrap
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.channel.*
;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.channel.socket.nio.NioServerSocketChannel
;
import
io.netty.channel.socket.nio.NioSocketChannel
;
import
lombok.extern.slf4j.Slf4j
;
import
java.nio.charset.Charset
;
/**
* 测试pipeline,入栈和出栈
*
* @author : qinyingjie
* @version : 2.2.0
* @date : 2023/4/27 02:45
*/
@Slf4j
public
class
Server
{
public
static
void
main
(
String
[]
args
)
{
new
ServerBootstrap
()
.
group
(
new
NioEventLoopGroup
())
.
channel
(
NioServerSocketChannel
.
class
)
.
childHandler
(
new
ChannelInitializer
<
NioSocketChannel
>()
{
@Override
protected
void
initChannel
(
NioSocketChannel
ch
)
throws
Exception
{
// 1.通过 channel 拿到 pipeline
//添加处理器head->h1->h2->h3->h4->h5->h6->tail
ChannelPipeline
pipeline
=
ch
.
pipeline
();
//2. 添加处理器head -> h1 -> tail
pipeline
.
addLast
(
"h1"
,
new
ChannelInboundHandlerAdapter
()
{
@Override
public
void
channelRead
(
ChannelHandlerContext
ctx
,
Object
msg
)
throws
Exception
{
log
.
info
(
"1"
);
ByteBuf
buf
=
(
ByteBuf
)
msg
;
final
String
name
=
buf
.
toString
(
Charset
.
defaultCharset
());
super
.
channelRead
(
ctx
,
name
);
}
});
pipeline
.
addLast
(
"h2"
,
new
ChannelInboundHandlerAdapter
()
{
@Override
public
void
channelRead
(
ChannelHandlerContext
ctx
,
Object
msg
)
throws
Exception
{
log
.
info
(
"2"
);
final
Student
student
=
new
Student
(
msg
.
toString
());
super
.
channelRead
(
ctx
,
student
);
}
});
pipeline
.
addLast
(
"h3"
,
new
ChannelInboundHandlerAdapter
()
{
@Override
public
void
channelRead
(
ChannelHandlerContext
ctx
,
Object
msg
)
throws
Exception
{
log
.
info
(
"3"
);
log
.
info
(
"h3结果{},class={}"
,
msg
,
msg
.
getClass
());
ch
.
writeAndFlush
(
ctx
.
alloc
().
buffer
().
writeBytes
(
"server..."
.
getBytes
()));
}
});
pipeline
.
addLast
(
"h4"
,
new
ChannelOutboundHandlerAdapter
()
{
@Override
public
void
write
(
ChannelHandlerContext
ctx
,
Object
msg
,
ChannelPromise
promise
)
throws
Exception
{
log
.
info
(
"4"
);
super
.
write
(
ctx
,
msg
,
promise
);
}
});
pipeline
.
addLast
(
"h5"
,
new
ChannelOutboundHandlerAdapter
()
{
@Override
public
void
write
(
ChannelHandlerContext
ctx
,
Object
msg
,
ChannelPromise
promise
)
throws
Exception
{
log
.
info
(
"5"
);
super
.
write
(
ctx
,
msg
,
promise
);
}
});
pipeline
.
addLast
(
"h6"
,
new
ChannelOutboundHandlerAdapter
()
{
@Override
public
void
write
(
ChannelHandlerContext
ctx
,
Object
msg
,
ChannelPromise
promise
)
throws
Exception
{
log
.
info
(
"6"
);
super
.
write
(
ctx
,
msg
,
promise
);
}
});
}
}).
bind
(
8080
);
}
}
\ No newline at end of file
src/main/java/com/kwan/shuyu/heima/netty_06_pipeline/Student.java
0 → 100644
浏览文件 @
77c126bf
package
com.kwan.shuyu.heima.netty_06_pipeline
;
import
lombok.Data
;
@Data
public
class
Student
{
private
String
name
;
public
Student
(
String
name
)
{
this
.
name
=
name
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录