【netty】主动关闭netty server

Netty的httpserver执行流程分析 Netty的httpserver执行流程分析 在上一篇文章,我们用Netty进行了一个建议的HttpServer的编写,在本文,我们对该server的执行流程做简要的分析。 回调函数介绍 我们在上一节编写的TestHttpServerHandler类是继承SimpleChannelInboundHandler类,该类是专门对客户端发送请求进行处理的类。通过观察源码,我们发现该类又继承了Channe... 阅读详情

设计一个可以控制监听端口的http服务端的开启和关闭的功能,启动部分比较简单,关闭查了一下,找到了功能,以下是demo

import com.wangjx.swallow.common.server.IServer;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandler;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import lombok.extern.slf4j.Slf4j;

import java.net.InetSocketAddress;

@Slf4j
public class HttpServer implements IServer {
    EventLoopGroup boss = null;
    EventLoopGroup work = null;
    ServerBootstrap bootstrap = null;
    Channel channel = null;
    public ChannelHandler channelHandler;
    int port ;

    public HttpServer(int port, ChannelHandler channelHandler){
        this.port = port;
        this.channelHandler = channelHandler;
    }

    @Override
    public int getPort() {
        return this.port;
    }

    public void start() {
        try {
            bootstrap = new ServerBootstrap();
            boss = new NioEventLoopGroup();
            work = new NioEventLoopGroup();
            bootstrap.group(boss, work)
                    .handler(new LoggingHandler(LogLevel.DEBUG))
                    .channel(NioServerSocketChannel.class)
                    .childHandler(new HttpServerInitializer(channelHandler));

            ChannelFuture f = bootstrap.bind(new InetSocketAddress(port)).sync();
            System.out.println("http server start up on port: " + port);
            channel = f.channel();
            f.channel().closeFuture().sync();
        } catch (Exception e) {
            log.error("start netty http server exception", e);
        } finally {
            work.shutdownGracefully();
            boss.shutdownGracefully();
        }
    }

    public void stop() {
        try {
            if (channel != null) {
                log.info("http server is stopping listen port {} ...", port);
                channel.close();
                channel = null;
                log.info("http server is stopped to listen port {} !", port);
            }
        } catch (Exception e) {
            log.error("close netty http server exception", e);
        }
    }

    @Override
    public void run() {
        start();
    }
}

start()方法就是启动server的方法,stop()方法就是停止server的方法,stop()方法中可以看到,就是将启动过程中获取到的channel关闭就好。

Netty的使用:Server和Client通信 Netty 是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。对比于BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。 提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Futur... 阅读详情

相关推荐

【Netty入门】基于Netty的Server / Client

回顾NIO我在之前介绍了NIO的server与client,虽然说编程相对于BIO比较复杂,但是性能高啊,而且Netty的server/client也是基于NIO的。所以,在介绍Netty的server/client 之前,先回顾一下NIO 的server / Client的步骤还是很有你要的.1.NIO 服务端Server开发步骤:(1)创建ServerSocketChannel,配置它为非阻塞模

白夜行 1万+

Java Netty:核心模块(二)

Netty 核心模块:Bootstrap、ServerBootstrap、Future、ChannelFuture、Channel、ChannelHandler、Pipeline、ChannelPipeline、ChannelHandlerContext、ChannelOption、EventLoopGroup、NioEventLoopGroup、Unpooled

AcWare 学习笔记 519

Netty(一):server启动流程解析

netty作为一个被广泛应用的通信框架,有必要我们多了解一点。   实际上netty的几个重要的技术亮点:     1. reactor的线程模型;     2. 安全有效的nio非阻塞io模型应用;     3. pipeline流水线式的灵活处理过程;     4. channelHandler的灵活实现;     5. 提供许多开箱即用的处理器和编解码器;   我们可以从这些点去深入理解其过人之处。 1. 一个NettyServer的demo   要想深入理解某个框架,一般还是要以...

AI乔治 777

Netty源码系列(2)——ServerBootstrap

先上一段经典使用姿势的样例代码。 EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootst

混混的博客 519

从零开始搭建属于自己的物联网平台(三)基于netty实现mqtt server网关

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**[外链图片转存中…(img-zMyv767z-1712367134528)][外链图片转存中…(img-rblLCrZE-1712367134529)]由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取。

2401_84009749的博客 1313

netty 通过端口调用关闭

NULL 博文链接:https://mocha-c-163-com.iteye.com/blog/2266786

Netty---BootStrap

Bootstrap类是Netty提供的一个工厂类,作用:Netty组件的组装,Netty程序的初始化。 一,概念 1.父子通道 在Netty中,每一个NioSocketChannel通道所封装的是Java Nio通道,java Nio下面就是操作系统封装的socket描述符。操作系统的底层socket描述符又分为: 1.连接监听类型:放在服务器端,负责接收客户端的套接字连接请求,一个监听类型的socket描述符可以监听成千上万个连接请求。 2...

阿七 1685

人工智能渗透测试:自动化安全评估

渗透测试认证的价值包括提高可信度和技能水平,并帮助客户确保由经过认证的个人对其系统进行全面的手动调查。B2B 交互变得越来越复杂,特别是功能丰富的超级应用程序,需要采取强有力的安全预防措施,而自动化渗透测试应用程序则是一种未被发现的武器。渗透测试中的人工智能通过提高效率、自动收集信息、发现隐藏的漏洞、开发个性化攻击和减少误报来提高 B2B 集成的安全性。这包括风险简报、补救建议和战略建议。渗透测试由五个阶段组成,是网络安全中的关键防御措施,它模拟现实世界的攻击,以识别系统缺陷并在漏洞被利用之前解决它们。

weixin_48967543的博客 2361

Netty-主动关闭Server

最近在实现某个功能需求的时候使用到了Netty,我们的需求需要netty的server端能实现主动关闭,而之前一直没有深入了解过,只会实现简单的连接,看了一些资料并实验后找到关闭server的方法: 1.主动关闭server 如下面的代码所示,这里启动server时将ServerChannel的实例保存至静态属性,然后暴露一个closeServer()方法,直接调用ServerChanne...

未完成的空间 1万+

2021-08-20

通过QQ号获取绑定的手机号 导语 偶有奇想,我们可以通过手机号来搜索获取其对应的QQ号,那么,反过来呢? 一.缩小范围 由于手机号属于隐私数据,腾讯QQ并没有直接给出通过QQ号查找对应手机号的接口。 国内的手机号有十一位数字,从数学的角度上来说,包含了1011种可能。如果遍历这1011个数据,通过QQ中手机号查找QQ号的接口来寻找,未免太过费时费力,根据网上查到的资料,同一个QQ号,在十分钟内只能进行30次查询(未验证)。因此,直接遍历的方法不现实。 在这10^13个数据中,包含着大量的可去除的无用数据。我

m0_56063822的博客 4714

Gromacs 模拟昆虫 P450 解毒酶与农药结合完整指南,仅供参考!

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1239

Netty的ChannelFuture.channel().closeFuture().syncUninterruptibly()作用

基本上Netty的server:ChannelFuture channelFuture= serverBootstrap.bind(port).syncUninterruptibly();//绑定端口,开启监听 后面都会加上这句channelFuture.channel().closeFuture().syncUninterruptibly();那这行代码到底有什么作用呢?具体没有深入源码,只...

yzh_1346983557的博客 2万+

【逐函数讲解ORB_SLAM3源码】获取普通帧率、关键帧、IMU数据

获得imu的旋转 mRwc * mImuCalib.mTcb.rotationMatrix(); Sophus::SE3 mTwc 创建ORB_SLAM3系统 Create SLAM system. It initializes all system threads and gets ready to process frames. ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::IMU_RGBD, true, 0, file_nam

小秋 AI SLAM 入门实战教程 1245

netty tcp服务端主动断开客户端_Netty实现在线聊天功能

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

weixin_39950824的博客 819

视觉Transformer实战 | 将卷积引入视觉Transformer(CvT)

CvT 是一种融合卷积神经网络与 Vision Transformer 优势的视觉模型,旨在解决 ViT 缺乏平移不变性和局部性等归纳偏置的问题。CvT 采用分层结构逐级降采样,使用卷积词元嵌入代替传统 patch 切分,引入卷积投影替代线性投影。这些设计使得 CvT 能够去除位置编码,在高分辨率输入下表现更优。本节深入解析 CvT 的核心原理,并提供完整的 PyTorch 代码实现,演示如何在实际数据集上训练和评估 CvT 模型。

盼小辉丶的博客 726

eCognition易康操作教程(一):如何利用eCognition易康软件进行影像分割之棋盘分割、四叉树分割、光谱差异分割

进程执行完成后,植被覆盖区域与裸地区域合并了。第三步:清除分割结果,点击“Image Objects”菜单栏,点击“Delete Level(s)”,选中“ResultLevel1”,点击”ok”删除棋盘分割结果。四叉树分割之后,有的正方形大一些,有的正方形小一些,大说明该区域的光谱特性更加均一,而小说明不太均一。Leve:选择运行算法的矢量层名称,这里选择四叉树分割算法得到的矢量层“ResultLevel2”。Image Layer weights:图层权重,这里设置为“1,1,1,1”。

蒹葭苍苍 4608

Netty客户端channel主动关闭时,服务端感知并关闭channel的过程

客户端主动关闭连接,服务端关闭channel的过程 在服务端中,在AbstractChannel#AbstractUnsafe的close(final ChannelPromise promise)方法上设置断点:这个是比较顶层的方法。 往下看底层开始时的调用栈:在selector接收到该channel的读写事件时,调用processSelectedKey处理进行处理,如下可知, 此时产...

源码之下,了无秘密 3万+

JAVA:Spring Boot 集成 LibreOffice 实现文档在线转换服务

本文介绍了在企业级应用开发中使用LibreOffice实现文档格式转换的技术方案。通过对比分析商业库、纯Java方案和云服务API的优缺点,重点阐述了LibreOffice在格式兼容性、转换质量和零成本方面的优势。文章详细说明了环境准备步骤,包括Windows/Linux系统安装LibreOffice、解决中文乱码问题以及Docker部署方案。最后提供了Spring Boot项目的基本配置,包括Maven依赖和application.yml配置文件,为构建稳定高效的文档转换服务奠定基础。

木头 519

netty实现http server端

在网上查了很多netty server端实现的例子,感觉还是有很多坑,这里记录一下自己的实现,也把自己踩的坑记录一下,利人利己。 首先创建一个server类,用来初始化netty的server端 public class NettyHttpServer { private Logger logger = LoggerFactory.getLogger(NettyHttpServer.class); private int inetPort; public NettyHtt

Limitedapm的博客 2249

openclaw本地模型对接

使用是官方推荐的一种集成方式,它可以简化配置过程。但由于您的系统环境和之前复杂的配置历史,我为您梳理了一个核心流程,并增加了关键的“事后检查”步骤,以确保能从根本上解决问题。

suny8的专栏 2460

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

netty之关闭连接源码分析

本文看下netty关闭channel相关源码。

wang0907的博客 631

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

gRPC Server 端关闭流程

gRPC Server 端关闭流程 关闭 Server 关闭 Server 可以使用 shutdown 或者 shutdownNow 方法 shutdown server.shutdown().awaitTermination(10, TimeUnit.SECONDS); io.grpc.internal.ServerImpl#shutdown 开始顺序的关闭 Server,已经存在的请求会继续执行,新的请求会被拒绝 public ServerImpl shutdown() { boolean

啦啦啦啦 la 6598

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

netty系列(一)netty server启动流程

本文介绍了java netty server的启动流程

cser的博客 863

Netty创建Server

1、添加依赖 netty-all-4.1.30.Final.jar 下载地址 2、创建全局配置 import io.netty.channel.group.ChannelGroup; import io.netty.channel.group.DefaultChannelGroup; import io.netty.util.concurrent.GlobalEventExecutor; pub...

Jinx 775
上一篇: 【工具类】测试目标设备网络是否可达
下一篇: 【Exception】fastjson的toJSONString()导致OOM
ColdFireMan
博客等级 码龄10年 27粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值