![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
io
文章平均质量分 83
小小白鸽
知其无可奈何而安之若命
展开
-
Java IO编程由浅入深 - 1 (bio c/s架构实现)
Java实现bio服务端与客户端互相通讯Java服务端代码实现Java 客户端代码实现maven依赖如下下期对将对此代码进行扩展,实现自定义协议,解决bio的沾包问题 Java服务端代码实现 package com.lhstack.bio; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; import java.io.Outpu原创 2021-03-08 22:27:14 · 340 阅读 · 2 评论 -
Java IO编程由浅入深 - 2(bio 基于字符串的消息编解码器)
这一期我们实现自定义编解码器和业务处理器创建编解码器的接口实现简单的StringMessageCodec定义我们的handler接口修改我们server.java的代码客户端同服务端类似,也加上相应代码 创建编解码器的接口 package com.lhstack.bio.codec; import java.nio.ByteBuffer; /** * 编码器 * @author lhstack */ public interface MessageCodec<T> { /**原创 2021-03-09 11:57:59 · 318 阅读 · 3 评论 -
Java IO编程由浅入深 - 3 (bio 基于消息长度的解编码器)
这一期我们实现基于长度的解编码器 经过上次的解编码器,我发现一个问题,当多个连接进来之后,会共享解编码器和handler,会出现多线程并发问题,因此,这一期我们将之前的server端进行修改,通过函数方式构造编解码器和handler,实现每个连接只会有与连接对应的解编码器和handler,数据由所在连接共享,同时,由于jdk自带的ByteBuffer不能实现自动扩容,因此我们使用netty-buffer工具中的ByteBuf作为数据传输 1.编写ObjectProvider接口,定义对象构造函数式接口 pa原创 2021-03-10 15:46:38 · 232 阅读 · 0 评论 -
Java IO编程由浅入深 - 4 (bio http协议解编码器,实现http服务器)
实现基于http协议的解编码器,并通过浏览器请求,返回数据创建HttpRequest类创建HttpResponse类创建HttpMessageCodec启动服务端 创建HttpRequest类 package com.lhstack.bio.codec.http; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.nio.charset.Charset; import java.util.Map;原创 2021-03-10 20:56:28 · 345 阅读 · 2 评论 -
Java IO编程由浅入深 - 5 (项目架构重构)
重构之前的bio服务器,提升项目可扩展性为什么要重构 为什么要重构 从上次http服务器解析实现之后,我思虑再三,最终决定对之前的架构进行重构 移除之前的MessageHandler 和 MessageCodec以及ObjectProvider等类 定义Channel接口,并创建其实现类SocketChannel,实现对socket进行封装 package com.lhstack.bio.channel; import java.io.IOException; /** * @author lhst原创 2021-03-14 20:57:01 · 284 阅读 · 5 评论 -
Java IO编程由浅入深 - 9 (bio实现http升级到websocket )
http升级到websocket目录编写websocket handler编写websocket 编解码器服务端测试代码测试浏览器通过http请求,能否收到正确消息使用websocket客户端连接test地址使用websocket客户端连接hello地址连接未配置的地址 目录 Java IO编程由浅入深 - 1 (bio c/s架构实现) Java IO编程由浅入深 - 2(bio 基于字符串的消息编解码器) Java IO编程由浅入深 - 3 (bio 基于消息长度的解编码器) Java原创 2021-03-17 13:13:25 · 729 阅读 · 0 评论 -
Java IO编程由浅入深 - 10 (bio 基于websocket的心跳检测实现 )
实现基于websocket的心跳检测目录在之前的handler上面,添加userTriggerEvent方法websocket心跳检测handler实现WebSocketEvent对象Server端实现使用客户端连接服务端,看是否收到心跳包 目录 Java IO编程由浅入深 - 1 (bio c/s架构实现) Java IO编程由浅入深 - 2(bio 基于字符串的消息编解码器) Java IO编程由浅入深 - 3 (bio 基于消息长度的解编码器) Java IO编程由浅入深 - 4 (b原创 2021-03-17 20:20:26 · 475 阅读 · 0 评论 -
Java IO编程由浅入深 - 8 (bio实现C/S聊天室 3 )
开发服务端分发消息功能,实现群聊对Message对象进行细分,拆分成以下对象编写CsServerMessageHandler,管理客户端与分发消息编写客户端代码测试一个客户端连接到服务端的效果这个时候我们加一个客户端,测试两个客户端的效果测试客户端1和2分别发送消息关闭客户端2 对Message对象进行细分,拆分成以下对象 TextMessage (数据为文本内容) BinaryMessage(数据为二进制) StreamMessage(数据为流数据) PingMessage(ping消息,对应必须响应po原创 2021-03-16 19:45:35 · 187 阅读 · 0 评论 -
Java IO编程由浅入深 - 7 (bio实现C/S聊天室 2 )
实现客户端与服务端的心跳机制功能扩展实现服务端的心跳检测handler实现客户端心跳机制的handler测试服务端与客户端之间的心跳通讯客户端代码查看服务端控制台查看客户端控制台 功能扩展 在原有基础上,我定义了一个EventLoopGroup接口,同时实现了一个默认的EventLoopGroup,它的作用是为channel分配一个EventLoop,同时,多个channel可以共享一个EventLoop EventLoop,类似线程池的功能,内部维护一个线程,同时不断的从task队列里面拿取任务执行 为原创 2021-03-16 14:11:50 · 227 阅读 · 0 评论 -
Java IO编程由浅入深 - 6 (bio实现C/S聊天室 1 )
定义服务端与客户端之间的通讯协议为什么要自定义传输协议定义数据传输协议编写我们的解编码器客户端与服务端进行通讯测试 为什么要自定义传输协议 客户端与服务端通讯,要保证数据传输的安全性,同时也要保证过滤垃圾消息,同时开源的协议,基本是通用的,我这次的需求是保证内部通讯,协议是唯一性的,不能让外部客户端随意连接进来进行通讯,因此需要自定义传输协议,保证数据的安全性 定义数据传输协议 /** * @author lhstack * 消息编解码器,用于客户端与服务端通讯 client / server * 自原创 2021-03-15 21:43:08 · 236 阅读 · 1 评论