版本:3.2.1.Final
服务器端
package com.test.net; import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.SimpleChannelHandler; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; /** * 服务器端 * @author root * */ public class TestNettyServer { public static void main(String[] args) { //1.创建服务器端启动器 ServerBootstrap serverBootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); //2.创建一个管道工厂,返回一个管道,并为该管道绑定处理器 serverBootstrap.setPipelineFactory(new ChannelPipelineFactory() { @Override public ChannelPipeline getPipeline() throws Exception { return Channels.pipeline(new HelloServerChannelHandler()); } }); //3.绑定端口 serverBootstrap.bind(new InetSocketAddress(8989)); System.out.println("服务器启动,端口是8989"); } /** * 事件处理器 * @author root * */ private static class HelloServerChannelHandler extends SimpleChannelHandler { public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) { System.out.println("One client has conneted..."); } } }
客户端:
package com.test.net; import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.SimpleChannelHandler; import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; /** * 客户端 * @author root * */ public class TestNettyClient { public static void main(String[] args) { //1.创建客户端启动器 ClientBootstrap clientBootstrap = new ClientBootstrap(new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); //2.创建一个管道工厂,返回一个管道,并为该管道绑定处理器 clientBootstrap.setPipelineFactory(new ChannelPipelineFactory() { @Override public ChannelPipeline getPipeline() throws Exception { return Channels.pipeline(new HelloClientChannelHandler()); } }); //绑定要连接的ip和端口 clientBootstrap.connect(new InetSocketAddress("localhost", 8989)); } /** * 事件处理器 * @author root * */ private static class HelloClientChannelHandler extends SimpleChannelHandler { @Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { System.out.println("connected..."); } } }
分别运行服务器端和客户端
相关推荐
Netty入门教程
Netty 入门与实战:仿写微信 IM 即时通讯系统
netty入门到精通
Netty 入门与实战:仿写微信 IM 即时通讯系统
Netty 入门与实战:仿写微信 IM 即时通讯系统,掘金小册子,netty教程。章节齐全无缺失,排版非常不错。 1.仿微信IM系统简介 1 2.Netty是什么? 2 3.服务端启动流程 8 4.客户端启动流程 11 5.实战:客户端与服务端双向...
Netty 入门与实战:仿写微信 IM 即时通讯系统
Netty 入门与实战
Netty实现IM通讯
Netty是一个比较流行的框架,学习最好的资源就是官方提供的demo,由于Netty是开源项目,直接可以把代码check下来,但是编译比较复杂,想快速上手的话可以单独编译子模块example即可,但是pom.xml需要进行改造,本文档...
本工程采用maven+netty4.1.0+PrefixedStringDecoder+json技术,包括客户端和服务端。先运行服务端SampleServer,再去等客户端SampleClient。示例中发的是心跳包,其中消息格式定义为msgType + msgNo + content(json...
掘金小册 Netty 入门与实战:仿写微信 IM 即时通讯系统,自己就是用这个来学习的,分章节的html版本,还不错
netty 入门Reactor示例
json4s-path.zip,json4s路径json4s的jsonpath
netty入门进阶之前
Netty example,可以直接导入到eclipse
一个简易的netty入门案例,打印客户端地址和客户端输出hello netty字符串,编码清晰易懂,注释全面。解释清楚,入门快,高效