首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Netty入门学习系列--helloworld服务端(一)

Netty入门学习系列--helloworld服务端(一)

作者头像
用户1257393
发布于 2018-07-30 07:05:20
发布于 2018-07-30 07:05:20
32900
代码可运行
举报
文章被收录于专栏:精讲JAVA精讲JAVA
运行总次数:0
代码可运行

netty服务端

结合上面几篇文章,我们大体了解了netty使用的nio的原理,但是编写一个通信,使用nio过于复杂,对于我们来说,快捷使用nio通信变得尤为重要,于是,我们的主角netty出现了,简化原生nio开发。

public class NettyServerTest {

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String [] args){
    new NettyServerTest().bing();
}
private void bing(){
    EventLoopGroup bossgroup = new NioEventLoopGroup();
    EventLoopGroup workgroup = new NioEventLoopGroup();
    ServerBootstrap serverBootstrap = new ServerBootstrap();
    serverBootstrap.group(bossgroup,workgroup)
            .channel(NioServerSocketChannel.class)
            .option(ChannelOption.SO_BACKLOG,1024).childHandler(new NettyChildHandle());
    try {
        ChannelFuture cf = serverBootstrap.bind(9999).sync();
        cf.channel().closeFuture().sync();
    } catch (InterruptedException ignored) {
    } finally {
        bossgroup.shutdownGracefully();
        workgroup.shutdownGracefully();
    }
}
private class NettyChildHandle extends ChannelInitializer<socketchannel> {
    @Override
    protected void initChannel(SocketChannel ch) throws Exception {
        ch.pipeline().addLast(new NettyServerHandle());
    }
}}
NettyServerHandle用来处理通信请求,最主要的是实现里面的channelRead、channelReadComplete、exceptionCaught三个方法

public class NettyServerHandle extends ChannelInboundHandlerAdapter {

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    ByteBuf byteBuf = (ByteBuf) msg;
    byte [] bytes = new byte[byteBuf.readableBytes()];
    byteBuf.readBytes(bytes);
    String body = new String(bytes,"UTF-8");
    System.out.println("收到来自外星的命令"+body);
    String currentTime = "hello".equals(body)?"my name is netty":"No";
    ByteBuf resp = Unpooled.copiedBuffer(currentTime.getBytes());
    ctx.write(resp);
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
     ctx.flush();
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
    ctx.close();
}}
截止目前,netty的服务端编写完成。,下一篇编写客户端,客户端相对来说较为简单
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 精讲JAVA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 单例模式通俗说
定义:单例模式就是将类的构造函数进行private化,然后只留出一个静态的Instance函数供外部调用者调用。
sowhat1412
2020/11/05
5310
我向面试官讲解了单例模式,他对我竖起了大拇指
单例模式相信大家都有所听闻,甚至也写过不少了,在面试中也是考得最多的其中一个设计模式,面试官常常会要求写出两种类型的单例模式并且解释其原理,废话不多说,我们开始学习如何很好地回答这一道面试题吧。
cxuan
2020/07/22
6170
我向面试官讲解了单例模式,他对我竖起了大拇指
java | 深入理解Java枚举类型(二)
blog.csdn.net/javazejian/article/details/71333103
JavaFish
2019/10/17
1.3K0
今天再来聊聊单例设计模式
今天我们再来探讨一下单例设计模式,可以说,单例设计模式在面试考察中是最常出现的,单例模式看似简单,每个人可能都可以写出来,但是能不能写好就是一个问题,往深了考察,又能考察出面试者对于并发、类加载、序列化的掌握程度。
故里
2020/11/25
2890
今天再来聊聊单例设计模式
设计模式——单例模式
关于单例模式,这是面试时最容易遇到的问题。当时以为很简单的内容,深挖一下,也可以关联出类加载、序列化等知识。
健程之道
2020/03/11
4370
设计模式--单例模式详解
单例模式(Singleton Pattern )是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也非常广泛,例如,公司CEO、部门经理等。J2EE标准中的ServletContext,ServletContextConfig等、Spring框架应用中的ApplicationContext、数据库的连接池等也都是单例形式。
向着百万年薪努力的小赵
2022/12/02
7590
设计模式--单例模式详解
单例设计模式
# 单例模式需要满足: 私有的构造函数 懒加载 线程安全 通过静态方法来访问实例 无法通过反射来实例化对象 无法通过反序列化来实例化对象 1. 饿汉模式 package com.futao.springbootdemo.design.pattern.gof.a.singleton; /** * 单例模式1-饿汉模式,即在类加载的时候就实例化对象。 * * @author futao * Created on 2018-12-25. */ public class EagerSingleton {
喜欢天文的pony站长
2020/06/29
3550
单例设计模式
设计模式 | 单例模式及典型应用
单例是最常见的设计模式之一,实现的方式非常多,同时需要注意的问题也非常多。要内容:
小旋锋
2019/01/21
1.1K0
【设计模式-单例模式】
今天来说一下同样属于创建型模式的单例模式,相信这个模式普遍都清楚,因为平时在编码的时候都会进行相应的使用,我这边就当做日志记录一下。免得以后忘了还得去搜,我发现我记忆里非常差,很多东西很快就忘记了,年纪大了没办法。
Liusy
2020/09/01
5920
【设计模式-单例模式】
[-设计模式知几何-] 创建型05-单例模式
打算开始打理我的公众号了,最新内容和独家秘籍。走过路过来捧个场,关注公众号:编程之王
张风捷特烈
2020/04/30
4720
[-设计模式知几何-] 创建型05-单例模式
深入理解《单例模式》之源码分析
执行这段代码会发现o1<>o2,这就破坏了单例。 为什么呢?罪魁祸首就是如下代码,它是反射的newInstance()的底层实现。
本人秃顶程序员
2019/05/15
5620
深入理解《单例模式》之源码分析
摸鱼设计模式——单例模式
饿汉式单例,无论是否使用,都直接初始化。其缺点则是会浪费内存空间。因为假如整个实例都没有被使用,那么这个类依然会创建,这就白创建了。
摸鱼-Sitr
2021/01/04
6920
摸鱼设计模式——单例模式
单例设计模式源码分析,常用设计模式白话文总结 顶
通过该错误说明,该枚举类中无参数构造函数 2.使用java反编译技术,查看枚举类
须臾之余
2019/07/05
4540
单例设计模式源码分析,常用设计模式白话文总结
                                                                            顶
设计模式(一):创建型之单例模式
使上面定义的单例类(Singleton)可以创建多个对象,枚举方式除外。有两种方式,分别是序列化和反射
Java微观世界
2025/01/21
1020
设计模式【1.2】-- 枚举式单例有那么好用么?
单例模式:是一种创建型设计模式,目的是保证全局一个类只有一个实例对象,分为懒汉式和饿汉式。所谓懒汉式,类似于懒加载,需要的时候才会触发初始化实例对象。而饿汉式正好相反,项目启动,类加载的时候,就会创建初始化单例对象。
秦怀杂货店
2020/12/26
5480
Java 设计模式 | 单例模式
单例模式,是设计模式中最常见的模式之一,它是一种创建对象模式,用于产生一个对象的具体实例,可以确保系统中一个类只会产生一个实例。
utopia
2023/03/20
4690
Java 设计模式 | 单例模式
头一次见单例模式讲的如此透彻
单例模式是一种常用的软件设计模式,用于创建类型。通过单例模式的方法创建的类在当前进程中只有一个实例。单例模式的类只能允许一个实例存在。单例模式的作用是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个。
wayn
2023/06/23
2820
头一次见单例模式讲的如此透彻
02.创建型:单例设计模式2
创建型:单例设计模式2目录介绍01.如何实现一个单例02.饿汉式实现方式03.懒汉式实现方式04.双重DCL校验模式05.静态内部类方式06.枚举方式单例07.容器实现单例模式01.如何实现一个单例介绍如何实现一个单例模式的文章已经有很多了,但为了保证内容的完整性,这里还是简单介绍一下几种经典实现方式。概括起来,要实现一个单例,我们需要关注的点无外乎下面几个:构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;考虑对象创建时的线程安全问题;考虑是否支持延迟加载;考虑 getI
杨充
2022/09/08
3110
Java单例模式
Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在,一些管理器和控制器常被设计成单例模式。
用户10358987
2024/04/23
1850
一个单例模式,被问7个问题,难!
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。单例模式属于创建型模式,它提供了一种创建对象的最佳方式。
田维常
2022/04/19
8880
一个单例模式,被问7个问题,难!
相关推荐
Java 单例模式通俗说
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验