解决Android接入服务器NanoHttpd响应慢的问题

【NanoHTTPD】Android,使用NanoHTTPD搭建服务器,接受Http请求,最佳实践 安卓app,作为服务器,接受Http,get post 请求推送数据,NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。 阅读详情

根据工作需求,要完成在电脑端访问Android设备文件的功能,也就是说把Android设备作为服务器,电脑作为客户端访问,通过nano可以实现,具体实现过程我就不详细写出了,网上很多内容,实现起来方便快捷,这篇文章主要说的是nano的2.3.1版本访问Android设备图片时很久才会返回内容,20k左右的图片需要17s甚至更久才会返回,无法满足使用要求,百度一下,目前只看到了一篇文章说明其原因和解决方案,关于在android平台使用nanohttpd实现的http服务在WIFI环境下响应明显太慢的问题_10km的博客-优快云博客_android nanohttpd这篇文章解释了原因,大家可以看一下。

        具体来说就是nano作者了解到了情况然后上传代码解决了响应慢的问题,但是没有生成版本,在项目地址GitHub上,我们可以看到

最新一次release版本是2016年的2.3.1,但是在2019年上传的新代码没有生成版本,在之前提到的那篇文章里,博主提到了两个解决方案:

        1.使用快照版本,这个我不知道如何使用,有会使用的麻烦告诉我一下

        2.下载源码,自己编译发布新版本,博主发布了但是打不开。

        我没有编译也不知道怎么使用快照,然后直接把源码下载下来copy到项目中,解决了响应慢的问题。

把这部分代码copy下来就行了,不需要其他东西。

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,这篇文章分析了源码,想要了解的也可以看一下

 

Android使用NanoHttpd在app内搭建http server(一) 一、场景: 想没想过在自己的Android的 app里内嵌一个http server服务端,这样咱们就可以从PC和手机上的浏览器遥控app了。接下来就使用一个GitHub的开源库Nanohttpd在app内搭建一个小型http的server。开源库地址:GitHub - NanoHttpd/nanohttpd: Tiny, easily embeddable HTTP server in Java. 二、简单集成使用 引入依赖库:implementation 'org.nanohttpd:nanoh 阅读详情

相关推荐

NanoHTTPD 2.2.0 嵌入式部署实战:3步在Android应用内启动HTTP服务

本文详细介绍了如何在Android应用中快速部署NanoHTTPD 2.2.0轻量级HTTP服务器,通过3个关键步骤实现本地HTTP服务的启动与管理。内容涵盖环境配置、核心服务封装以及与Android组件的协同工作,特别针对移动端优化了生命周期管理和性能参数设置,帮助开发者高效构建嵌入式HTTP服务解决方案。

weixin_33895657的博客 410

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

本文的标题是按我在实际项目中遇到的情况来表述的,其实这个标题并不准确,当我搞清楚问题的原因后,觉得准确的标题应该是 《关于nanohttpd (2.3.1)运行响应变慢的问题》,也就是说问题的发生与android平台和WIFI环境没有直接关系,与nanohttpd版本有关。 nanohttpd 是什么这就不介绍了,我们在开发一个项目时要在android平台上实现一个WEB服务,就用到了nanohttpd.确实挺好用的,这个框架很小,但扩展性很好,没花多少时间就实现项目需要的WEB服务,开发测试都正常。 但是

10km的专栏 2298

搭建Android Web服务器:NanoHTTPD实战教程

NanoHTTPD是一个简单而轻量级的Java HTTP服务器框架,专为轻量级应用设计。它主要用于教育目的、测试、小型项目或任何需要快速搭建HTTP服务的场景。由于其轻量级特性,NanoHTTPD非常适合嵌入到其他Java应用中,提供Web服务功能,而不会给系统带来过重的负担。路由是Web服务器中用于将URL映射到处理特定请求的处理器的功能。NanoHTTPD提供了基本的路由功能,但也可以通过自定义实现更复杂的路由逻辑。为了实现自定义处理器,可以使用类,它提供了更灵活的路由机制。

weixin_42576804的博客 2120

【亲测免费】 探秘XServer:Android渗透测试的强大助手

探秘XServer:Android渗透测试的强大助手 项目介绍 XServer是一款基于Xposed框架的模块,专为Android应用的渗透测试设计,配备了内置的NanoHttpd服务器。它的核心功能是帮助安全研究人员动态追踪和控制应用程序的方法调用,提高渗透测试效率。无论是逆向工程还是通信协议分析,XServer都是一个不可多得的工具。 项目技术分析 XServer的架构非常巧妙,它结合了Xpo...

gitblog_00038的博客 705

android nanohttpd 手机端 迷你服务器

anoHTTPD是个很简单的http服务器 简单到只有一个java文件 主要原理是用ServerSocket接受请求 对每一个请求的Socket创建一个线程去处理(HTTPSession) 线程内保存Socket 用Properties保存切割出来的head信息和url后的参数信息 serveFile方法处理是返回异常页面 还是响应请求 返回请求的页面 代码有点乱 Properties是继承自HashTable是个同步的Map 一个请求用一个线程处理 感觉不需要同步 却用了同步 创建线程的代码如下: public NanoHTTPD int port throws IOException Java代码 收藏代码 { myTcpPort port; final ServerSocket ss new ServerSocket myTcpPort ; Thread t new Thread new Runnable { public void run { try { while true new HTTPSession ss accept ; } catch IOException ioe {} } } ; t setDaemon true ; t start ; } HTTPSession内保存了Socket的引用 ">anoHTTPD是个很简单的http服务器 简单到只有一个java文件 主要原理是用ServerSocket接受请求 对每一个请求的Socket创建一个线程去处理(HTTPSession) 线程内保存Socket 用Properties保存切割出来的head信息和url后的参数信息 serveFile [更多]

手把手教学:用国产GLM-4.6替代Claude4.0,实现AI自动化编程全流程

本文提供了一份详细的教程,指导开发者使用国产GLM-4.6模型替代Claude 4.0,实现AI自动化编程。内容涵盖从获取API密钥、搭建本地环境、改造Claude Code工具到实战开发与VSCode集成的全流程,旨在帮助用户低成本、高效率地体验AI自主编程。

weixin_29070861的博客 553

【Android】手机端使用NanoHTTPD版本2.3.1可能响应慢的问题

NanoHTTPD 访问慢问题,需要使用新的jar包。

u014702108的博客 1306

解读Autoware.Universe规划模块:Behavior Path Planner

Behavior Path Planner是一个基于行为生成不同形态路径的路径规划器,负责生成 基于交通状况的路径(path), 车辆可以移动的可行驶区域(drivable area)(在路径消息中定义), 将被发送到车辆接口的转向信号(turn signal) 命令。

策 5491

nanohttpd高级特性:WebSocket支持与实时通信实现

你还在为Java项目中集成实时通信功能而烦恼吗?是否觉得传统HTTP协议无法满足实时数据传输的需求?本文将详细介绍nanohttpd的WebSocket支持特性,帮助你快速实现高效的实时通信功能。读完本文后,你将能够:理解WebSocket在nanohttpd中的实现原理、掌握创建WebSocket服务器的基本步骤、学会处理客户端连接和消息交互、了解常见问题及解决方案。 ## WebSocket...

gitblog_01180的博客 810

ARIMA模型的R实现

1.模型简介 ARIMA模型,全称差分自回归移动平均模型。可以看作是差分运算和ARMA模型的结合。主要是针对具有线性趋势的非平稳的时间序列,来进行建模预测。 ARIMA模型的形式如下: Φ(B)∇

heirenmin的博客 1万+

ESP32-IDF HTTP服务器实战:从零搭建Web控制界面

本文详细介绍了如何在ESP32平台上使用ESP-IDF框架从零搭建HTTP服务器,并创建Web控制界面。内容涵盖环境配置、服务器基础设置、Web页面处理、GPIO控制接口实现及AJAX异步请求处理,帮助开发者快速掌握物联网设备Web控制开发。

efc123456的博客 1063

在Android APP内部实现一个Http Server——NanoHttpd 简单剖析

前言 最近公司产品(门禁系统)由安卓这边来实现,需要和宇泛人脸识别终端进行对接,对接过程中说白了,也就是在互相的调接口(这也就是项目做完了敢这么说吧),其实刚刚开始接触这块东西的时候还是挺懵圈的,理顺宇泛的文档,发现好多东西(将人员信息上传至宇泛设备、设置是否允许宇泛设备开门、设置宇泛设备的识别回调地址),这些都是通过Httppost 方式提交数据就好了吗!刚开始看的时候啊,那给我乐...

zhangmiaoping23的专栏 4221

手把手教你配置C6678的SPI启动:从NorFlash烧写到多核加载的完整流程

本文详细介绍了TMS320C6678多核DSP的SPI启动全流程,包括硬件准备、镜像文件生成与转换、NorFlash烧写与验证、多核启动同步机制以及常见问题排查。通过实战演示,帮助开发者高效配置SPI启动模式,解决启动失败、多核同步异常等问题,提升嵌入式系统开发效率。

weixin_27076351的博客 151

NanoHttpd 安卓HTTP Sever建立

安卓HTTP Sever?手机上的服务器?局域网内你最好的选择。

博客 6482

拆解爆火AI图文日报!用扣子(Coze)工作流,10分钟实现自动化新闻早报

当用户提供一则新闻内容时,仔细分析新闻中的关键信息。提取新闻事件的核心要点,包括事件主体、发生时间、地点、主要情节等。用简洁的语言对新闻进行总结,控制在[X]字以内(可根据实际需求设定字数限制)。若用户提供多条新闻,对比各新闻之间的异同点。从事件类型、影响范围、发展趋势等方面进行分析。综合总结多条新闻的整体情况,以有条理的方式呈现给用户。

一身都是月 2426

YOLOv12改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制

这篇文章带来一个经典注意力模块的汇总,虽然有些模块已经发布很久了,但后续的注意力模块也都是在此基础之上进行改进的,对于初学者来说还是有必要去学习了解一下,以加深对模块,模型的理解。

Limiiiing的博客 1511

wvp-GB28181-pro:把海康大华摄像头统一接入一个国标28181平台的快速指南

公司里摄像头分属海康、大华、宇视等不同品牌,录像平台各管各的,想统一查看还得逐个登录。wvp-GB28181-pro 是一个基于 GB28181-2016、部标808/1078 标准实现的开箱即用的网络视频平台,自带管理页面,负责核心信令与设备管理,能把这些设备统一接入到同一个平台下观看、回放、级联共享。 ## 项目定位 它本质上做两件事:一是当国标28181服务器,让支持国标的 IPC、NV

gitblog_00654的博客 494

Python 爬虫实战:爬虫代码打包为可执行文件

本文详细介绍了使用PyInstaller工具将Python爬虫打包为可执行文件的全过程。以豆瓣电影Top250爬虫为例,首先对比了主流打包工具,推荐选择跨平台的PyInstaller。通过编写完整的爬虫代码(包含异常处理和数据保存功能),演示了从环境准备、代码测试到打包配置的具体步骤。重点讲解了单文件打包、自定义图标等高级功能,并针对常见的"找不到模块"、文件体积过大等问题提供了解决方案。文章还说明了跨平台打包的注意事项,帮助开发者实现爬虫程序的无环境依赖部署,大幅提升程序的易用性和部署

2503_91057718的博客 2216

Android 视频投射之NanoHTTPD

Android 视频投射之NanoHTTPD 号称用一个java文件实现Http服务器 有必要对其源码及例子进行分析 1 public abstract class NanoHTTPD { 2 3 //异步执行请求 4 public interface AsyncRunner { 5 6 void cl...

weixin_30509393的博客 1746

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NanoHTTPD学习

NanoHTTPD是一轻型服务器,可以再Android手机中构建一web服务器。NanoHTTPD是一个开源的项目,下面我们对其流程进行分析: public NanoHTTPD( int port, File wwwroot ) throws IOException { myTcpPort = port; this.myRootDir = wwwroot; myServerSoc

yinzubo的专栏 1346

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android nano app,实战nanoHTTPD嵌入android app(3)

这里将告诉您实战nanoHTTPD嵌入android app(3),教程操作步骤:这篇咱们来解决image显示的问题。6. 支持image看看2000年的网易,是多么的朴(chou)素(lou)。 Image.png所以支持主流的image也是必须滴!有了上面的基础,其实加个图片也是个小case啦,也就是两个点:image的类型。从上面那个表,咱们可以看到这几个,只要把它们加到咱们的if else...

weixin_39743064的博客 276

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Android 客户端起HttpServer NanoHttpd

最近接到客户那边需求,说需要实现一个java后端请求android客户端,android客户端作为微型Web服务端,听起来真的很刺激,后面去网上查找一些资料,了解NanoHttpd是怎么回事?NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很...

郑敏 29万+

android,java实现NanoHTTPD 轻量级 服务器

android,java实现NanoHTTPD 轻量级服务器   NanoHTTPD.java下载地址 https://download.youkuaiyun.com/download/qq_36355271/10478872 下面用到的 HanoHTTPD可通过上面地址下载:   1,服务现实类:   /** * Created by zjp on 2018/6/11.  */ 这个类就...

qq_36355271的博客 4567
上一篇: Android 融云即时通讯开发
下一篇: JavaFx 设置窗口边框圆角
解牛之术
博客等级 码龄11年 49粉丝 46原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值