前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于在android平台使用nanohttpd实现的http服务在WIFI环境下响应明显太慢的问题

关于在android平台使用nanohttpd实现的http服务在WIFI环境下响应明显太慢的问题

作者头像
10km
发布2020-08-30 15:44:34
1.9K0
发布2020-08-30 15:44:34
举报
文章被收录于专栏:10km的专栏10km的专栏

本文的标题是按我在实际项目中遇到的情况来表述的,其实这个标题并不准确,当我搞清楚问题的原因后,觉得准确的标题应该是 《关于nanohttpd (2.3.1)运行响应变慢的问题》,也就是说问题的发生与android平台和WIFI环境没有直接关系,与nanohttpd版本有关。

nanohttpd 是什么这就不介绍了,我们在开发一个项目时要在android平台上实现一个WEB服务,就用到了nanohttpd.确实挺好用的,这个框架很小,但扩展性很好,没花多少时间就实现项目需要的WEB服务,开发测试都正常。 但是android设备在WIFI环境下运行时,通过WEB访问,能感觉明显比接网线时要慢。很长时间我们都找不到问题的原因,都打算放弃nanohttpd另觅框架替代了,但是换框架重新开发代价比较大,实在舍不得,我还想再抢救一下,我就又在google上的一统找,发现2017年就有人在github/nanohttpd上提出了这个问题: 《Very slow loading in version 2.3.0》 https://github.com/NanoHttpd/nanohttpd/issues/318

我用的 nanohttpd 版本是2.3.1,也最近发布的版本(2016年),对症哦

nanohttpd这个项目版本更新很慢,最近一个release 版本2.3.1是2016年的,近4年没有release新版本

仔细看上面这个话题,你会发现有人已经找到了问题的规律,是HTTPSession构造方法中调用InetAddress.getHostName()方法导致变慢

在这里插入图片描述
在这里插入图片描述

进一步,查看nanohttpd的提交记录,发现最后一次PR合并(2019年),就是解决这个问题的

在这里插入图片描述
在这里插入图片描述

这是最后一次提交的链接: https://github.com/NanoHttpd/nanohttpd/commit/cd37235110d6712204c77e2bdc463e84af6ed4e3

所以根本原因就是因为调用InetAddress.getHostName()方法要通过DNS解析来实现,导致产生网络访问,而花费大量时间,与android平台和WIFI环境无关,只是WIFI环境下网络访问延迟大,慢的更明显。

好了,现在问题搞清楚了,nanohttpd master分支上已经解决了这个问题,只是nanohttpd没有release版本。 所以解决问题的方法有如下可选:

使用快照版本

如果你不太讲究,不在意使用快照版本,那就啥也不改,直接下载nanohttpd源码,编译使用master分支下的快照版本2.3.2-SNAPSHOT

release to maven

如果你不希望使用快照版本,那就得自己编译master分支,release一个版本到maven中央仓库或你的私有仓库。 你也可以使用我发布到maven中央仓库的版本,

代码语言:javascript
复制
	<dependency>
	    <groupId>com.gitee.l0km</groupId>
	    <artifactId>nanohttpd</artifactId>
	    <version>2.3.4</version>
	</dependency>		

我复制了nanohttpd的仓库到码云 https://gitee.com/l0km/nanohttpd 我只是为了发布版本到maven中央仓库,修改了pom.xml(l0km分支),比如nanohttpd项目的groupID(com.gitee.l0km),以及为了在JDK8能正常编译而修改了javadoc插件参数等等

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用快照版本
  • release to maven
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档