diff --git a/.gitignore b/.gitignore index 9f11b75..aba02a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -.idea/ +.idea/ diff --git a/netty/netty.md b/netty/netty.md index e69de29..ff317bf 100644 --- a/netty/netty.md +++ b/netty/netty.md @@ -0,0 +1,38 @@ +# Netty +## Netty适用场景 +目前,http协议被广泛用于web服务器和客户端之间的交流,但是在一些场景下http协议不能够很好的拓展。 +如在交换大文件、email信息或实时信息(如多人游戏数据和经济信息)等场景下,通常不使用通用http协议,而是需要为特定需求优化过使用特定场景的协议。 +## Netty介绍 +Netty Project提供了异步事件驱动的网络应用框架,并为快速开发和维护高性能、高拓展的协议服务器和客户端提供工具。 +Netty是开发协议服务器和客户端的NIO开发框架,提供了开发快速和简单开发协议服务器和客户端的方式。其大大简化了网络开发例如tcp和udp套接字编程过程。 +## Netty Demo +### Discard Demo +如果要通过netty实现一个丢弃接收数据的server,可以参照如下实现。如下的handler实现用于处理由netty产生的IO事件: +```java +package io.netty.example.discard; + +import io.netty.buffer.ByteBuf; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelHandlerAdapter; + +/** + * Handles a server-side channel. + */ +public class DiscardServerHandler extends ChannelHandlerAdapter { // (1) + + @Override + public void channelRead(ChannelHandlerContext ctx, Object msg) { // (2) + // Discard the received data silently. + ((ByteBuf) msg).release(); // (3) + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { // (4) + // Close the connection when an exception is raised. + cause.printStackTrace(); + ctx.close(); + } +} +``` +- ChannelHandlerAdapter是ChannelHandler的实现类,并且为 \ No newline at end of file