AndroidServer:基于 Kotlin + Netty 开发,为 Android App 提供 Server 的功能,包括 Http、TCP、WebSocket 服务

上传者: 42116794 | 上传时间: 2025-05-28 10:14:57 | 文件大小: 200KB | 文件类型: ZIP
AndroidServer 基于 Kotlin + Netty 开发,为 Android App 提供 Server 的功能,包括 Http、TCP、WebSocket 服务 Feature: 支持 Http、TCP、WebSocket 服务 支持 Rest 风格的 API、文件上传、下载 支持加载静态网页 Http 的路由表、全局的 HttpFilter 均采用字典树(Tried Tree)实现 日志隔离,开发者可以使用自己的日志库 core 模块只依赖 netty-all,不依赖其他第三方库 最新版本 模块 最新版本 android-server-core android-server-converter-gson 下载安装 Gradle: implementation 'com.safframework.server:android-server-core:<latest-versi

文件下载

资源详情

[{"title":"( 91 个子文件 200KB ) AndroidServer:基于 Kotlin + Netty 开发,为 Android App 提供 Server 的功能,包括 Http、TCP、WebSocket 服务","children":[{"title":"AndroidServer-master","children":[{"title":".gitignore <span style='color:#111;'> 91B </span>","children":null,"spread":false},{"title":"app","children":[{"title":".gitignore <span style='color:#111;'> 7B </span>","children":null,"spread":false},{"title":"build.gradle <span style='color:#111;'> 1.84KB </span>","children":null,"spread":false},{"title":"src","children":[{"title":"androidTest","children":[{"title":"java","children":[{"title":"com","children":[{"title":"safframework","children":[{"title":"androidserver","children":[{"title":"ExampleInstrumentedTest.kt <span style='color:#111;'> 688B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"main","children":[{"title":"AndroidManifest.xml <span style='color:#111;'> 1.10KB </span>","children":null,"spread":false},{"title":"res","children":[{"title":"mipmap-xhdpi","children":[{"title":"ic_launcher_round.png <span style='color:#111;'> 7.30KB </span>","children":null,"spread":false},{"title":"ic_launcher.png <span style='color:#111;'> 4.81KB </span>","children":null,"spread":false}],"spread":true},{"title":"mipmap-mdpi","children":[{"title":"ic_launcher_round.png <span style='color:#111;'> 3.31KB </span>","children":null,"spread":false},{"title":"ic_launcher.png <span style='color:#111;'> 2.57KB </span>","children":null,"spread":false}],"spread":true},{"title":"layout","children":[{"title":"activity_main.xml <span style='color:#111;'> 555B </span>","children":null,"spread":false}],"spread":true},{"title":"mipmap-xxhdpi","children":[{"title":"ic_launcher_round.png <span style='color:#111;'> 11.59KB </span>","children":null,"spread":false},{"title":"ic_launcher.png <span style='color:#111;'> 7.72KB </span>","children":null,"spread":false}],"spread":true},{"title":"drawable","children":[{"title":"ic_launcher_background.xml <span style='color:#111;'> 5.47KB </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-anydpi-v26","children":[{"title":"ic_launcher_round.xml <span style='color:#111;'> 272B </span>","children":null,"spread":false},{"title":"ic_launcher.xml <span style='color:#111;'> 272B </span>","children":null,"spread":false}],"spread":false},{"title":"drawable-v24","children":[{"title":"ic_launcher_foreground.xml <span style='color:#111;'> 1.66KB </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-hdpi","children":[{"title":"ic_launcher_round.png <span style='color:#111;'> 5.21KB </span>","children":null,"spread":false},{"title":"ic_launcher.png <span style='color:#111;'> 3.51KB </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-xxxhdpi","children":[{"title":"ic_launcher_round.png <span style='color:#111;'> 16.18KB </span>","children":null,"spread":false},{"title":"ic_launcher.png <span style='color:#111;'> 10.40KB </span>","children":null,"spread":false}],"spread":false},{"title":"values","children":[{"title":"strings.xml <span style='color:#111;'> 76B </span>","children":null,"spread":false},{"title":"colors.xml <span style='color:#111;'> 208B </span>","children":null,"spread":false},{"title":"styles.xml <span style='color:#111;'> 383B </span>","children":null,"spread":false}],"spread":false}],"spread":true},{"title":"assets","children":[{"title":"web","children":[{"title":"test.html <span style='color:#111;'> 176B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"java","children":[{"title":"com","children":[{"title":"safframework","children":[{"title":"androidserver","children":[{"title":"app","children":[{"title":"App.kt <span style='color:#111;'> 544B </span>","children":null,"spread":false}],"spread":false},{"title":"server","children":[{"title":"Servers.kt <span style='color:#111;'> 3.97KB </span>","children":null,"spread":false}],"spread":false},{"title":"MainActivity.kt <span style='color:#111;'> 1.71KB </span>","children":null,"spread":false},{"title":"log","children":[{"title":"LogProxyImpl.kt <span style='color:#111;'> 634B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"test","children":[{"title":"java","children":[{"title":"com","children":[{"title":"safframework","children":[{"title":"androidserver","children":[{"title":"ExampleUnitTest.kt <span style='color:#111;'> 355B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"proguard-rules.pro <span style='color:#111;'> 751B </span>","children":null,"spread":false}],"spread":true},{"title":"core","children":[{"title":".gitignore <span style='color:#111;'> 7B </span>","children":null,"spread":false},{"title":"build.gradle <span style='color:#111;'> 1.73KB </span>","children":null,"spread":false},{"title":"src","children":[{"title":"main","children":[{"title":"AndroidManifest.xml <span style='color:#111;'> 122B </span>","children":null,"spread":false},{"title":"java","children":[{"title":"com","children":[{"title":"safframework","children":[{"title":"server","children":[{"title":"core","children":[{"title":"http","children":[{"title":"Request.kt <span style='color:#111;'> 669B </span>","children":null,"spread":false},{"title":"entity","children":[{"title":"UploadFile.kt <span style='color:#111;'> 384B </span>","children":null,"spread":false}],"spread":false},{"title":"filter","children":[{"title":"HttpFilter.kt <span style='color:#111;'> 513B </span>","children":null,"spread":false}],"spread":false},{"title":"cookie","children":[{"title":"HttpCookie.kt <span style='color:#111;'> 1.47KB </span>","children":null,"spread":false}],"spread":false},{"title":"HttpRequest.kt <span style='color:#111;'> 2.70KB </span>","children":null,"spread":false},{"title":"controller","children":[{"title":"NotFoundController.kt <span style='color:#111;'> 712B </span>","children":null,"spread":false}],"spread":false},{"title":"HttpMethod.kt <span style='color:#111;'> 854B </span>","children":null,"spread":false},{"title":"HttpResponse.kt <span style='color:#111;'> 7.00KB </span>","children":null,"spread":false},{"title":"Response.kt <span style='color:#111;'> 1.48KB </span>","children":null,"spread":false},{"title":"ParamParser.kt <span style='color:#111;'> 1.91KB </span>","children":null,"spread":false}],"spread":false},{"title":"handler","children":[{"title":"http","children":[{"title":"H1BrokerHandler.kt <span style='color:#111;'> 1.68KB </span>","children":null,"spread":false},{"title":"H2BrokerHandler.kt <span style='color:#111;'> 5.65KB </span>","children":null,"spread":false},{"title":"Http2HandlerBuilder.kt <span style='color:#111;'> 1.08KB </span>","children":null,"spread":false},{"title":"NettyHttpServerInitializer.kt <span style='color:#111;'> 1.79KB </span>","children":null,"spread":false},{"title":"AlpnHandler.kt <span style='color:#111;'> 1.49KB </span>","children":null,"spread":false}],"spread":false},{"title":"socketAndWS","children":[{"title":"SocketChooseHandler.kt <span style='color:#111;'> 1.50KB </span>","children":null,"spread":false},{"title":"CustomerServerHandler.kt <span style='color:#111;'> 2.45KB </span>","children":null,"spread":false},{"title":"ChannelActiveHandler.kt <span style='color:#111;'> 1016B </span>","children":null,"spread":false},{"title":"PipelineAdd.kt <span style='color:#111;'> 1.55KB </span>","children":null,"spread":false},{"title":"SocketListener.kt <span style='color:#111;'> 716B </span>","children":null,"spread":false},{"title":"NettySocketServerInitializer.kt <span style='color:#111;'> 1.24KB </span>","children":null,"spread":false}],"spread":false},{"title":"websocket","children":[{"title":"NettyWebSocketServerInitializer.kt <span style='color:#111;'> 1.28KB </span>","children":null,"spread":false},{"title":"TextWebSocketFrameHandler.kt <span style='color:#111;'> 1.80KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"Server.kt <span style='color:#111;'> 2.30KB </span>","children":null,"spread":false},{"title":"log","children":[{"title":"LogManager.kt <span style='color:#111;'> 734B </span>","children":null,"spread":false},{"title":"LogProxy.kt <span style='color:#111;'> 421B </span>","children":null,"spread":false}],"spread":false},{"title":"utils","children":[{"title":"ByteBufUtils.kt <span style='color:#111;'> 394B </span>","children":null,"spread":false},{"title":"SocketUtils.kt <span style='color:#111;'> 1.75KB </span>","children":null,"spread":false}],"spread":false},{"title":"ssl","children":[{"title":"SslContextFactory.kt <span style='color:#111;'> 1.82KB </span>","children":null,"spread":false}],"spread":false},{"title":"TypeAliases.kt <span style='color:#111;'> 514B </span>","children":null,"spread":false},{"title":"converter","children":[{"title":"Converter.kt <span style='color:#111;'> 597B </span>","children":null,"spread":false},{"title":"ConverterManager.kt <span style='color:#111;'> 582B </span>","children":null,"spread":false}],"spread":false},{"title":"router","children":[{"title":"RouteTable.kt <span style='color:#111;'> 3.13KB </span>","children":null,"spread":false},{"title":"PathTrie.kt <span style='color:#111;'> 4.96KB </span>","children":null,"spread":false}],"spread":false},{"title":"AndroidServer.kt <span style='color:#111;'> 8.26KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"consumer-rules.pro <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"proguard-rules.pro <span style='color:#111;'> 751B </span>","children":null,"spread":false}],"spread":true},{"title":"settings.gradle <span style='color:#111;'> 111B </span>","children":null,"spread":false},{"title":"build.gradle <span style='color:#111;'> 1.41KB </span>","children":null,"spread":false},{"title":"gradlew <span style='color:#111;'> 5.17KB </span>","children":null,"spread":false},{"title":"CHANGELOG.md <span style='color:#111;'> 1.11KB </span>","children":null,"spread":false},{"title":"README.md <span style='color:#111;'> 7.22KB </span>","children":null,"spread":false},{"title":"gradlew.bat <span style='color:#111;'> 2.21KB </span>","children":null,"spread":false},{"title":"gradle.properties <span style='color:#111;'> 1.14KB </span>","children":null,"spread":false},{"title":"converter","children":[{"title":".gitignore <span style='color:#111;'> 7B </span>","children":null,"spread":false},{"title":"consumer-rules.pro <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"gson","children":[{"title":".gitignore <span style='color:#111;'> 7B </span>","children":null,"spread":false},{"title":"build.gradle <span style='color:#111;'> 1.79KB </span>","children":null,"spread":false},{"title":"src","children":[{"title":"androidTest","children":[{"title":"java","children":[{"title":"com","children":[{"title":"safframework","children":[{"title":"androidserver","children":[{"title":"converter","children":[{"title":"gson","children":[{"title":"ExampleInstrumentedTest.kt <span style='color:#111;'> 723B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":"main","children":[{"title":"AndroidManifest.xml <span style='color:#111;'> 132B </span>","children":null,"spread":false},{"title":"java","children":[{"title":"com","children":[{"title":"safframework","children":[{"title":"server","children":[{"title":"converter","children":[{"title":"gson","children":[{"title":"GsonUtils.kt <span style='color:#111;'> 656B </span>","children":null,"spread":false},{"title":"GsonConverter.kt <span style='color:#111;'> 516B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":"test","children":[{"title":"java","children":[{"title":"com","children":[{"title":"safframework","children":[{"title":"androidserver","children":[{"title":"converter","children":[{"title":"gson","children":[{"title":"ExampleUnitTest.kt <span style='color:#111;'> 370B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":"consumer-rules.pro <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"proguard-rules.pro <span style='color:#111;'> 751B </span>","children":null,"spread":false}],"spread":false},{"title":"proguard-rules.pro <span style='color:#111;'> 751B </span>","children":null,"spread":false}],"spread":true},{"title":"gradle","children":[{"title":"wrapper","children":[{"title":"gradle-wrapper.properties <span style='color:#111;'> 232B </span>","children":null,"spread":false},{"title":"gradle-wrapper.jar <span style='color:#111;'> 53.06KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":false}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明