Netty开篇——NIO章下(五)

SelectionKey

  1. 表示 Selector 和网络通道的注册关系,共四种(全是常量):
    • Int OP_ACCEPT:有新的网络连接可以接受,值为 16 (1 << 4)
    • Int OP_CONNECT: 代表连接已经建立,值为 8 (1 << 3)
    • Int OP_READ:代表读操作,值为 1 (1 << 0)
    • Int OP_WRITE: 代表写操作,值为 4  (1 << 2)

  2. 相关方法:
public abstract Selector selector();//得到与之关联的Selector对象
public abstract SelectableChannel channel();//得到与之关联的通道
public final Object attachment();//得到与之关联的共享数据
public abstract SelectionKey interestOps(int ops);//设置或改变监听事件
public final boolean isAcceptable();//是否可以 accept 
public final boolean isReadable();//是否可以读
public final boolean isWritable();//是否可以写

 

ServerSocketChannel

  1. ServerSocketChannel 在服务器端监听新的客户端 Socket 连接
  2. 相关方法:
  • public static ServerSocketChannel open(),得到一个ServerSocketChannel通道
  • publle final ServerSocketChannel bind(SocketAddress local),设置服务器端端口 号
  • publle final SelectableChannel configureBlocking(boolean block), 设置阻塞或非 阻塞模式,取值false表示采用非阻塞模式
  • publlc SocketChannel accept(),接受一个连接,返回代表这个连接的通道对象
  • public final SelectionKey register(Selectorsel,int ops), 注册一个选择器并设置 监听事件

 

SocketChannel 

  1. SocketChannel,网络IO通道,具体负责进行读写操作。NIO 把缓冲区的数据写入通道,或者把通道里的数据读到缓冲区。
  2. 相关方法:
  • public static SocketChannel open():/得到一个SocketChannel通道
  • public final SelectableChannel configureBlocking(boolean block);//设置阻塞或非阻塞模式,取值false表示采用非阻塞模式
  • public boolean connect(SocketAddress remote);//连接服务器
  • public boolean finishConnect();//如果上面的方法连接失败,接下来就要通过该方法完成连接操作
  • public int write(ByteBuffer src);//往通道里写数据
  • public int read(ByteBuffer dst);//从通道里读数据
  • public final SelectionKey register(Selectorsel,int ops,Object att);//注册一个选择器并设置监听事件,最后一个参数可以设置共享数据
  • public final void close();//关闭通道

NIO实现聊天室功能(选修)

  1. 要求:
    • 编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)
    • 实现多人群聊
    • 服务器端:可以监测用户上线,离线,并实现消息转发功能
    • 客户端:通过 channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得)
  2. GroupChatServer

 

3. GroupChatClient 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/326047.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#AIGC#text2video文生视频,开源DragNUWA:通过集成文本、图像和轨迹对视频生成进行细粒度控制

DragNUWA&#xff1a;通过集成文本、图像和轨迹对视频生成进行细粒度控制 论文地址&#xff1a;https://arxiv.org/abs/2308.08089 DragNUWA 使用户能够直接操纵图像中的背景或对象&#xff0c;模型将这些动作无缝地转换为相机运动或对象运动&#xff0c;生成相应的视频。 Drag…

linux基础学习(3):挂载

挂载可以理解为给磁盘空间一个可访问的入口&#xff0c;那个入口称为挂载点&#xff0c;相当于windows中的盘符。 1.挂载命令mount 1.1直接输入mount 查看系统已挂载的设备 1.2挂载与卸载命令 mount -t 文件系统名 设备文件名 挂载点 | umount 挂载点 或 umount 设…

机器学习——支持向量机SVM

1 摘要&#xff1a; 支持向量机&#xff08;SVM&#xff09;是一种二类分类模型&#xff0c;其基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大&#xff0c;间隔最大使它有别于感知机&#xff0c;支持向量机也可通过核技巧使它成为非线性分类器。支持…

防火墙部署安全区域

目录 为什么需要安全区域在防火墙上如何来区分不同的网络将接口划分到安全区域安全区域、受信任程度与安全级别安全域间、安全策略与报文流动的方向 安全区域配置案例 为什么需要安全区域 防火墙主要部署在网络边界起到隔离的作用 在防火墙上如何来区分不同的网络 防火墙通过安…

MobaXterm无法上传文件处理

ssh能成功通过mobaxterm连接虚拟机但sftp上传失败的解决办法 1、出现问题时&#xff0c;/etc/ssh/sshd_config的配置文件关于sftp的这行下图所示的情况 2、更改配置文件/etc/ssh/sshd_config的配置文件关于sftp为“internal-sftp”。 3、执行命令systemctl restart sshd&…

leetcode82. 删除排序链表中的重复元素 II

文章目录 题目思路1复杂度Code2 思路2复杂度2Code2 题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;…

10.云原生之在线开发调试

云原生专栏大纲 文章目录 vscode-server介绍VSCode Server 和云开发结合vscode-server安装code-server安装插件在线安装插件离线安装插件安装中文插件 配置开发环境在容器中安装开放环境Dockerfile制作镜像 git拉取项目 vscode-server介绍 VSCode Server&#xff08;Visual S…

C++ 编程需要什么样的开发环境?

C 编程需要什么样的开发环境&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#…

k8s之pod基础(下)

k8s之pod基础&#xff08;下&#xff09; 存活探针和就绪探针&#xff0c;会伴随整个pod的生命周期 就绪探针的特点&#xff1a;pod的状态是running&#xff0c;ready状态是notready&#xff0c;容器不可以提供正常的业务访问&#xff0c;就绪探针不会重启容器 就绪探针exec的…

闲鱼宝库亮相!闲鱼商品详情关键词搜索电商API接口助你畅享无尽好货!

随着互联网的快速发展&#xff0c;电商平台的崛起已经改变了人们的购物习惯。而在众多电商平台中&#xff0c;闲鱼作为一款社区二手交易平台&#xff0c;一直备受用户喜爱。如今&#xff0c;闲鱼宝库正式亮相&#xff0c;为用户带来了更加全面、详细的商品详情关键词搜索电商AP…

IP地址冲突警告!你的网络正在受到威胁

IP地址冲突是网络安全中的一个严重问题&#xff0c;可能导致网络不稳定、数据泄漏等严重后果。本文将深入探讨IP地址冲突的原因、影响以及如何应对&#xff0c;以提醒用户关注网络安全问题。 1. IP地址冲突的原因&#xff1a; 动态分配问题&#xff1a;在使用动态IP地址分配的…

开发需求总结9-el-tree获取选中节点,节点全选时返回被全选子级的父节点,未全选则返回被选中的节点

目录 需求描述 代码实现&#xff1a; 需求描述 需要获取树组件选中的节点&#xff0c;假如父节点被选中&#xff08;该节点全选&#xff09;&#xff0c;即只返回父节点的数据&#xff0c;如父节点未被全选&#xff0c;则正常返回被选中节点的数据。 示例一&#xff1a; 如上图…

大众点评评论采集软件使用教程

导出字段&#xff1a; 店铺ID 评论ID 发布时间 人均消费 评分 详情链接 点赞数 浏览数 评论数 最后更新时间 发布平台 推荐 评论详情 原始评论 图片数 图片链接 用户等级 用户名称 用户头像 VIP 私

农业无人机行业分析:单年内作业量突破13亿亩次

面对我国18亿亩的耕地植保市场需求&#xff0c;未来我国植保无人机将依然保持快速发展态势&#xff0c;预计2022年我国植保无人机销量将增长至8万架。 植保无人机市场呈现爆发式增长&#xff0c;同时也吸引了不少企业进入&#xff0c;我们从2022年植保无人机企业网络热度榜中可…

Linux学习记录——사십일 高级IO(2)--- Select型服务器

文章目录 1、思路2、select接口3、实现1、准备工作2、实现等待多个fd3、辨别连接和简单处理读事件4、简单处理写、读事件 4、特点 1、思路 select就是多路转接IO。select能以某种形式&#xff0c;等待多个文件描述符&#xff0c;只要有哪个fd有数据就可以读取并全部返回。就绪…

服务异步通讯——springcloud

服务异步通讯——springcloud 文章目录 服务异步通讯——springcloud初始MQRabbitMQ快速入门单机部署1.1.下载镜像安装MQ SpringAMQPwork Queue 工作队列Fanout Exchange广播模式DirectExchange路由模式TopicExchange话题模式 消息转换器 初始MQ RabbitMQ快速入门 官网https:/…

手把手教你SWOT分析!建议收藏

最近&#xff0c;我一直为一件事情感到困扰。那家位于市中心的西点店生意越来越好&#xff0c;甚至已经开了两家分店&#xff0c;但是挣来的钱还不足够买房子。于是最近&#xff0c;我被这如火如荼的奶茶市场所吸引&#xff0c;想要利用已有的资源开一家奶茶店。但是我不确定这…

计算机视觉开发工程师怎么考?报考难度大吗?证书含金量高吗?

为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求&#xff0c;深入实施人才强国战略和创新驱动发展战略&#xff0c;加强全国数字化人才队伍建设&#xff0c;持续推进人工智能专业人员…

JNPF低代码引擎到底是什么?

最近听说一款可以免费部署本地进行试用的低代码引擎&#xff0c;源码上支持100%源码&#xff0c;提供的功能和技术支持比较完善。借助这篇篇幅我们了解下JNPF到底是什么&#xff1f; JNPF开发平台是一款PaaS服务为核心的零代码开发平台&#xff0c;平台提供了多租户账号管理、主…

《TrollStore巨魔商店》TrollStore2安装使用教程支持IOS14.0-16.6.1

TrollStore(巨魔商店) 简单的说就相当于一个永久的免费证书&#xff0c;它可以给你的iPhone和iPad安装任何你想要安装的App软件&#xff0c;而且不需要越狱,不用担心证书签名过期的问题&#xff0c;不需要个人签名和企业签名。 支持的版本&#xff1a; TrollStore安装和使用教…