首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NIONIO版本鸿儒聊天

# 需求 基于NIO实现 支持同时多个客户端接入 支持客户端发送文本消息到服务器 支持客户端自定义群聊名称 接收到客户端发送的消息之后,服务器需要将消息转发给目前在线的所有其他客户端 支持客户端退出群聊...客户端自动断开连接 # 技术介绍 Non-blockingI/O 编程模型 Channel 通道 ServerSocketChannel 服务端通道 SocketChannel 客户端通道 ByteBuffer NIO...服务器 /** * 基于NIO实现的聊天室服务端 * * @author futao * @date 2020/7/8 */ @Slf4j public class NioChatServer...# 源代码 * https://github.com/FutaoSmile/learn-IO/tree/master/practice/src/main/java/com/futao/practice/...chatroom/nio # 系列文章 【BIO】基于BIO实现简单动态HTTP服务器 【BIO】通过指定消息大小实现的多人聊天室-终极版本 BIO在聊天室项目中的演化

56510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java NIO

    了解javaNIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞 NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。...Java中的NIO 原理接说到这里,下面看一下jdk中NIO的实现和用法。jdk中的NIO的实现,主要几个部分是Channel(通道),Buffer(缓冲区),Selector(选择器)。...综上所述,JavaNIO是以Selector为核心的,基于同步非阻塞的IO多路复用。 OS的IO多路复用 那么,Selector是如何得知哪些通道是就已经就绪了呢?...参考文章: Java NIO系列教程 Java NIONIO概述 Java IO & NIO & NIO2 Java 网络 IO 模型 Java NIO系列教程(六) 多路复用器Selector Java...网络IO编程总结(BIO、NIO、AIO均含完整实例代码) Java NIO 反应堆模式简单模型 Java NIO(7): Epoll版的Selector Linux IO模式及 select、poll

    1.2K40

    Java NIO

    Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。...二、NIO和IO的主要区别 下表总结了Java IO和NIO之间的主要区别: IO NIO 面向流 面向缓冲 阻塞IO 非阻塞IO 无 选择器 1、面向流与面向缓冲 Java IO和NIO...Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。...如果需要管理同时打开的成千上万个连接,这些连接每次只是发送少量的数据,例如聊天服务器,实现NIO的服务器可能是一个优势。...Java NIO: 单线程管理多个连接 如果你有少量的连接使用非常高的带宽,一次发送大量的数据,也许典型的IO服务器实现可能非常契合。下图说明了一个典型的IO服务器设计: ?

    68130

    java nio

    NIO阻塞式 3. Selector(选择器) 3.1. SelectionKey 3.2. NIO非阻塞式 4....DatagramChannel:UDP 获取通道 本地IO,提供了getChannel()方法获取通道 FileInputStream FileOutputStram RandomAccessFile 在JDK1.7中的NIO...,针对各个通道提供了静态方法open() 在JDK1.7中的NIO的Files工具类的newByteChannel() 实例 利用通道实现文件的复制(非直接缓冲区) /** * 使用getChannel...写入数据的通道 //聚集写入,将数据从各个缓冲区中写入到通道中 outChannel.write(dst); inchannel.close(); outChannel.close(); } NIO...阻塞式 阻塞或者不阻塞是针对SocketChannel,ServerSocketChannel NIO中的套接字可以轻松在阻塞和非阻塞之间切换,这里我们使用NIO实现阻塞式的TCP数据传输 /**

    1.1K20

    Java NIO系列教程(一)java NIO简介

    java标准IO回顾 Java 标准 IO 类库是 io 面向对象的一种抽象。基于本地方法的底层实现,我们无须关注底层实现。...java NIO简介 Java NIO(New IO Non Blocking IO)是从Java1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。...看到NIO这么多的优点,是不是有点小激动。继续看一下他们的区别。 Java NIO与IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。...Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。...通道与缓冲区 Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer)。 Buffer:表示打开到IO设备(例如:文件、套接字)的连接。 是一块连续的内存块。

    42020

    Java SE】Java NIO系列教程(一) Java NIO 概述

    Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector...下面是JAVA NIO中的一些主要Channel的实现: FileChannel DatagramChannel SocketChannel ServerSocketChannel 正如你所看到的,这些通道涵盖了...以下是Java NIO里关键的Buffer实现: ByteBuffer CharBuffer DoubleBuffer FloatBuffer IntBuffer LongBuffer ShortBuffer...Java NIO 还有个 Mappedyteuffer,用于表示内存映射文件, 我也不打算在概述中说明。 Selector Selector允许单线程处理多个 Channel。...例如,在一个聊天服务器中。 这是在一个单线程中使用一个Selector处理3个Channel的图示: ?

    74870

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券