netty学习(二)——Hello world!
来源:互联网 发布:投资 域名 编辑:程序博客网 时间:2024/06/06 00:06
在认识完基本概念后,我们开始进行我们自己的hello world 简单范例,以此来揭开netty的第一层面纱:
1,maven
首先我们需要引入netty的jar包,依赖如下:
<dependency><groupId>io.netty</groupId><artifactId>netty</artifactId><version>3.10.5.Final</version></dependency>
2,服务端
服务端的简单逻辑就是监听8000端口,注册消息处理方法,在获取到客户端链接的方法中打印 hello world
package com.xvshu.test.one;import org.jboss.netty.bootstrap.ServerBootstrap;import org.jboss.netty.channel.*;import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;import java.net.InetSocketAddress;import java.util.concurrent.Executors;/** * Netty 服务端 * Created by xvshu on 2016/7/13. */public class HelloServer { public static void main(String args[]) { // Server服务启动器 ServerBootstrap bootstrap = new ServerBootstrap( new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // 设置一个处理客户端消息和各种消息事件的类(Handler) bootstrap.setPipelineFactory(new ChannelPipelineFactory() { @Override public ChannelPipeline getPipeline() throws Exception { return Channels.pipeline(new HelloServerHandler()); } }); // 开放8000端口供客户端访问。 bootstrap.bind(new InetSocketAddress(8000)); } private static class HelloServerHandler extends SimpleChannelHandler { /** * 当有客户端绑定到服务端的时候触发,打印"Hello world, I'm server." * * @alia OneCoder * @author lihzh */ @Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) { System.out.println("Hello world, I'm server."); } }}
3,客户端
客户端比较简单,启动一个客户端,在获取到服务端链接的方法中打印 hello world
package com.xvshu.test.one;import org.jboss.netty.bootstrap.ClientBootstrap;import org.jboss.netty.channel.*;import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;import java.net.InetSocketAddress;import java.util.concurrent.Executors;/** * Netty 客户端 * Created by xvshu on 2016/7/13. */public class HelloClient { public static void main(String args[]) { // Client服务启动器 ClientBootstrap bootstrap = new ClientBootstrap( new NioClientSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // 设置一个处理服务端消息和各种消息事件的类(Handler) bootstrap.setPipelineFactory(new ChannelPipelineFactory() { @Override public ChannelPipeline getPipeline() throws Exception { return Channels.pipeline(new HelloClientHandler()); } }); // 连接到本地的8000端口的服务端 bootstrap.connect(new InetSocketAddress( "127.0.0.1", 8000)); } private static class HelloClientHandler extends SimpleChannelHandler { /** * 当绑定到服务端的时候触发,打印"Hello world, I'm client." * * @alia OneCoder * @author lihzh */ @Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) { System.out.println("Hello world, I'm client."); } }}
最后我们先运行服务端,然后运行客户端,发现都打印了hello world ,证明他们两个链接建立成功!
总结:
网络是强大的,这些代码在网上就是最简单的示例,却为我们提供了非常好的学习入口,让人感觉简单,这样的感觉,是学习总比不可少的,起码是在初期比不可少的,信息+信心,我们将学习无所不易!
1 0
- netty学习(二)——Hello world!
- 《Netty学习》(二)Hello World
- Netty 中文教程 (二) Hello World !详解
- Netty 中文教程 (二) Hello World !详解
- Netty 中文教程 (二) Hello World !详解
- Netty构建游戏服务器(二)--Hello World
- BootStrap学习—01(Hello World)
- Android学习进程(二):Hello,world!
- Python 脚本语言学习(二)- Hello World
- nginx 学习(二) hello world 程序
- docker学习笔记(二):Hello World
- (二).SpringMVC 学习-SpringMVC Hello World!
- netty hello world
- Liferay学习笔记(二)——第一个Liferay例子——Hello World
- C#学习笔记(二)——hello world程序详解
- Kotlin学习(二)——基本命令行操作hello world
- Nodejs学习二:Hello World
- Swift学习(二)-Hello World
- 关于动态数据
- Valid Palindrome
- ListIterator接口
- 安装Genymotion + Virtualbox 出现 “不能为虚拟电脑打开一个新任务 E_FAIL(0x80004005)”错误的解决办法
- NYOJ58 最少步数(搜索)
- netty学习(二)——Hello world!
- SOA中间件 - 服务自动注册与发现
- Hdu 5347 MZL's chemistry (打表)
- JAVA8之lambda表达式详解,及stream中的lambda使用
- BZOJ 3109([cqoi2013]新数独-搜索)
- HDU 1796 How many integers can you find(求1到n-1之间能被一个集合A内元素整除的数的个数)
- USACO - Dec08 Bad Grass 重庆一中高2018级竞赛班第二次测试 2016.7.13 Problem 1
- ThreadPoolExecutor机制
- XSS攻击原理以及解决办法