# netty-model **Repository Path**: wangzonghui/netty-model ## Basic Information - **Project Name**: netty-model - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-23 - **Last Updated**: 2023-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [toc] - 2021-07-19 # 说明 - 本项目为netty相关功能实例项目,主要包括serializable、JBoss Marshalling、Protobuf、Thrift数据类型编码和解码。 # 资料 - string代码 [博客](https://blog.csdn.net/maoyuanming0806/article/details/81097083) - Jboss Marshalling [博客](https://blog.csdn.net/qq_16669583/article/details/106305476) 实体类和自定义编码解码 - 客户端连接多个服务端[博客](https://www.cnblogs.com/Lixiaogang/p/13066090.html) - ftp实例[博客](https://blog.csdn.net/qq_41874088/article/details/109699089) - webSocket[博客](https://blog.csdn.net/qq_41874088/article/details/109758378) - 我们一直使用的http协议只能由客户端发起,服务端无法直接进行推送,这就导致了如果服务端有持续的变化客户端想要获知就比较麻烦。WebSocket协议就是为了解决这个问题应运而生。WebSocket协议,客户端和服务端都可以主动的推送消息,可以是文本也可以是二进制数据。而且没有同源策略的限制,不存在跨域问题。协议的标识符就是ws。 - WebSocket是H5之后提供的一种网络通讯技术,属于应用层协议。它基于 TCP 传输协议,并复用 HTTP 的握手通道。 # 编码解码器 - serializable :原生java编解码。效率低,编码后存储大。不跨语言。 - Protobuf:谷歌开发,效率高、跨语言,支持java、C++、python三种语言 - Thrift:facebook开发,支持C++、C#、Cocoa、Erlang、Haskell、Java、Ocami、Perl、PHP、Python、Ruby和Smalltalk - JBoss Marshalling,优化原生java编码解码器 - MessagePack 编码 # 资料 - netty服务端主动关闭连接造成端口大量TIME_WAIT解决方法[博客](https://www.cnblogs.com/dadonggg/p/8778318.html) # 结构 ## rpc - rpc是分布式通信核心功能,用于监控汇集分布式框架中各个节点任务状态和数据信息。 - 以下将通过多种编码解码方式实现rpc通信实例。 ### string - 包路径:com.netty.cn.rpc.string - channel使用类:ChannelInboundHandlerAdapter - server端 - 有**两个**handler - client - 支持server端关闭后10S重连。 ### jboss - 包路径:com.netty.cn.rpc.jboss - channel使用类:ChannelInboundHandlerAdapter ### protoc - 包路径:com.netty.cn.rpc.protoc - channel使用类:SimpleChannelInboundHandler ### 自定义网包 - 包路径:com.netty.cn.rpc.selfmessage - 自定义通信网包,灵活度更高。 ## model ### http - 包路径:com.netty.cn.model.http - 协议:TCP - 说明 - http服务因为服务端主动请求关闭连接,TCP协议端口会统一由系统管理,TIME_WAIT状态存在,等到过了有效时间,系统清除,如果连接数过多,因TIME_WAIT造成连接失败,可修改系统,缩短TIME_WAIT时间,或复用TIME_WAIT状态端口。 ### chat聊天室 - 包路径:com.netty.cn.model.chat - 协议:TCP ### moreClient - 包路径:com.netty.cn.model.MoreClient - 协议:TCP - 说明 - 多个服务端,一个客户端连接多个服务端,编码使用jboss ### ftp - 包路径:com.netty.cn.model.ftp - 协议:TCP - 说明 - 指定路径建立ftp服务 - 目录和文件增加不同图标 ### websocket - 包路径:com.netty.cn.model.websocket - 协议:TCP - 说明 - 与前端双向请求响应socket通信 ### UDP - 包路径:com.netty.cn.model.udp - 协议:UPD - 说明 - 与前端双向请求响应socket通信 ### socket - 包路径:com.netty.cn.model.socket - 协议:TCP - 说明 - 基础底层通信方式 ### sendFile - 自定义发送文件 # 记录 - 2023-03-15 - 自定义netty发送文件 - 2023-02-21 - 实现自定义网包通信 - 2023-02-06 - 增加socket实例 - 2021-07-28 - 增加客户端长连接多个服务器实例 - 2021-08-05 - 增加http服务程序 - 2021-08-06 - http实例,增加页面返回 - 增加ftp服务实例 - 增加websocket实例 - 2021-11-02 - 增加http服务其他版本实现 - 增加udp服务