java netty实现tcp协议_Netty实现网络通信

Netty 是一个 Java NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。Netty 大大简化了网络程序的开发过程比如 TCP 和 UDP 的 socket 服务的开发。更多关于 Netty 的知识,可以参阅《Netty 4.x 用户指南》( https://github.com/waylau/netty-4-user-guide)

下面,就基于 Netty 快速实现一个聊天小程序。

准备

JDK 7+

Maven 3.2.x

Netty 4.x

Eclipse 4.x

服务端

让我们从 handler (处理器)的实现开始,handler 是由 Netty 生成用来处理 I/O 事件的。

SimpleChatServerHandler.java

public class SimpleChatServerHandler extends SimpleChannelInboundHandler { // (1)

public static ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);

@Override

public void handlerAdded(ChannelHandlerContext ctx) throws Exception { // (2)

Channel incoming = ctx.channel();

for (Channel channel : channels) {

channel.writeAndFlush("[SERVER] - " + incoming.remoteAddress() + " 加入\n");

}

channels.add(ctx.channel());

}

@Override

public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { // (3)

Channel incoming = ctx.channel();

for (Channel channel : channels) {

channel.writeAndFlush("[SERVER] - " + incoming.remoteAddress() + " 离开\n");

}

channels.remove(ctx.channel());

}

@Override

protected void channelRead0(ChannelHandlerContext ctx, String s) throws Exception { // (4)

Channel incoming = ctx.channel();

for (Channel channel : channels) {

if (channel != incoming){

channel.writeAndFlush("[" + incoming.remoteAddress() + "]" + s + "\n");

} else {

channel.writeAndFlush("[you]" + s + "\n");

}

}

}

@Override

public void channelActive(ChannelHandlerContext ctx) throws Exception { // (5)

Channel incoming =

你可能感兴趣的:(java,netty实现tcp协议)