1.7 KiB
1.7 KiB
Netty
Netty适用场景
目前,http协议被广泛用于web服务器和客户端之间的交流,但是在一些场景下http协议不能够很好的拓展。
如在交换大文件、email信息或实时信息(如多人游戏数据和经济信息)等场景下,通常不使用通用http协议,而是需要为特定需求优化过使用特定场景的协议。
Netty介绍
Netty Project提供了异步事件驱动的网络应用框架,并为快速开发和维护高性能、高拓展的协议服务器和客户端提供工具。
Netty是开发协议服务器和客户端的NIO开发框架,提供了开发快速和简单开发协议服务器和客户端的方式。其大大简化了网络开发例如tcp和udp套接字编程过程。
Netty Demo
Discard Demo
如果要通过netty实现一个丢弃接收数据的server,可以参照如下实现。如下的handler实现用于处理由netty产生的IO事件:
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的实现类,并且为