案例演示:创建客户端和服务端,实现客户端与服务端建立连接,并且发送消息给服务端

Netty框架之网络通信入门程序~helloWorld

  • 1.服务端代码实现
  • 2.客户端代码实现

请尝试阅读代码,并理解注释的含义

1.服务端代码实现

public class Server {public static void main(String[] args) {//serverBootstrap,就是服务端启动器,启动服务端,并且绑定组件ServerBootstrap serverBootstrap = new ServerBootstrap();serverBootstrap//设置NIOEventLoopGroup包含一组NIOEventLoop,NIOEventLoop其实就是一个单线程(维护Selector,处理channel的请求)//这里我们设置两个NIOEventLoopGroup,一个充当Boss专门处理连接请求,一个充当Woker专门处理IO读写请求.group(new NioEventLoopGroup(),new NioEventLoopGroup())//设置通道类型服务端就是NioServerSocketChannel,客户端是NioSocketChannel.channel(NioServerSocketChannel.class)//这里设置的就是Woker(child)的处理器,也就是IO读写的具体实现.childHandler(new ChannelInitializer<NioSocketChannel>() {//初始化处理器,处理器用于IO处理的具体实现,把多个处理器加入到pipeline中形成一条处理器连,线程会一次执行这些处理器来完成指定的IO操作@Overrideprotected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {ChannelPipeline pipeline = nioSocketChannel.pipeline();pipeline.addLast(new StringDecoder());//解析器,收到Bytebuffer数据解析成字符串pipeline.addLast(new ChannelInboundHandlerAdapter() {//自定义处理器//当收到数据的时候会触发这个方法@Overridepublic void channelRead(ChannelHandlerContext channelHandlerContext, Object msg) throws Exception {System.out.println(msg);//输出收到的数据}});}}).bind(8080);//绑定服务器的监听端口}}

2.客户端代码实现

public class Cilent {public static void main(String[] args) throws Exception {//bootstrap客户端启动器,启动客户端,绑定各个组件Bootstrap bootstrap = new Bootstrap();//设置NioEventLoopGroup作为Woker线程组处理IO读写请求,这里因为客户端不需要处理连接请求,所以不需要NioEventLoopGroup作为Boss线程组Channel channel = bootstrap.group(new NioEventLoopGroup())//设置通道类型.channel(NioSocketChannel.class)//设置Woker线程的处理器,完成IO读写的具体实现,类似于服务端的childHandler.handler(new ChannelInitializer<NioSocketChannel>() {@Overrideprotected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {nioSocketChannel.pipeline().addLast(new StringEncoder());//编码器,把字符串编码为ByteBuffer}})//向指定IP和端口的服务器发起连接请求.connect(new InetSocketAddress("localhost",8080))//同步等待,阻塞直到连接建立成功.sync()//连接建立成功之后返回一个通道,这个通道就是与服务器对应连通的,用于通信.channel();channel.writeAndFlush("helloWorld");//向服务端发送helloWorld}
}

Netty框架之网络通信入门程序~helloWorld相关推荐

  1. SpringMVC框架----SpringMVC的入门程序

    1.入门程序的需求 在这里插入图片描述 编写一个页面,叫index.jsp.页面上写一个超链接的标签,点击超链接,会发出一个请求,如果把请求发出去的话.后台编写类,接收请求,编写方法.发送请求,方法就 ...

  2. 【SpringMVC框架】springmvc入门程序-环境搭建

    入门程序 1.需求 以案例作为驱动. springmvc和mybaits使用一个案例(商品订单管理). 回顾一下表单各项关联关系 见图数据模型 功能需求:商品列表查询 2.环境准备 数据库环境:mys ...

  3. 【MyBatis框架】MyBatis入门程序第二部分

    我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis,接着上一篇继续 我们开始实现需求中的添加和删除用户功能 (1)向数据库中添加用户数据 使用User.xml,加入添加用户的sql语 ...

  4. 【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  5. 【MyBatis框架】MyBatis入门程序第一部分

    为什么80%的码农都做不了架构师?>>>    我们通过写一个简单的MyBatis小项目来在实战中学习MyBatis 1.需求 根据用户id(主键)查询用户信息 根据用户名称模糊查询 ...

  6. 【Java基础】Java开发环境搭建并编写第一个入门程序HelloWorld

    大家好,我是程序员青戈,一个被Bug耽误了才艺的程序员

  7. Spring Boot的第一个入门程序 HelloWorld

    一个功能:浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串: @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 ...

  8. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  9. java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))

    springmvc框架 什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.(struts2与Spring整合的时候需 ...

最新文章

  1. 鸟哥的Linux私房菜(基础篇)-第二章、 Linux 如何学习(二.2. 鸟哥的Linux苦难经验全都录)
  2. 200820C阶段一通用链表
  3. mysql 5.74安装教程_MySQL安装、基本账户安全(5.0以后版本)
  4. 信息学奥赛之数学一本通_部分地区中考加分,又一批中学公布中考认可信息学特长生!...
  5. 【树莓派】如何设置树莓派 VNC 的分辨率
  6. 学生选课系统代码--分析1
  7. 禾川plc编程软件_HCP Works(禾川PLC编程工具)V2.26.01.92013 免费版
  8. Android SoundPool封装
  9. 带你快速了解ISO27001信息安全管理体系认证
  10. 中华酷联小米:未来谁将干掉三星?
  11. 计算机与经济学之关联刍议,西方五大经济学期刊发展趋势刍议
  12. SpringMVC总结笔记
  13. IP前缀列表配置实验
  14. 推荐系统系列:新浪搜索团队FiBiNET理论和代码实现
  15. JAVA毕业设计高校人事管理系统计算机源码+lw文档+系统+调试部署+数据库
  16. 路由器---IGMP协议详解
  17. 声音检索引擎- midomi.com
  18. python判断值是否存在_python如何判断元素是否存在
  19. ffmpeg源码简析(九)av_log(),AVClass,AVOption
  20. 基于web的电影点评系统分析与设计

热门文章

  1. 6.CreateEvent函数与SetEvent函数
  2. 《微SaaS创富周刊》第8期:奇葩!产品卖2次共赚5000万美元,盘点16个视频创富项目
  3. 前端游戏之原生js-猴子吃水果
  4. 用云理念进行3D打印——魔猴网创始人张勇访谈
  5. 谷歌浏览器安装vue工具 devtools
  6. 微信公众号之微信登录失败,redirect_uri域名与后台配置不一致,错误代码10003
  7. 攻略-信用卡额度提升必杀技
  8. java ws协议_基于java实现websocket协议过程详解
  9. 结合iconworkshop,创建ribbon界面
  10. 给计算机老师的一封赞美信,给老师的一封信赞美的信