在Android手机上搭建一个http服务器

简介: 看到标题是不是有点懵,在Android手机上搭建一个http服务器???你TM在逗我没错,我们就是要在Android手机上搭建一个http服务器。

看到标题是不是有点懵,在Android手机上搭建一个http服务器???

img_e7501a741fe007f3f3689c63a865cd15.jpe
你TM在逗我

没错,我们就是要在Android手机上搭建一个http服务器。提到http服务器一般第一反应是Apache,nginx
Android上也能运行Apache,nginx了???
Android手机上当然不能运行这些服务器了,这次在Android上运行的是用Golang写的一个简单的http服务器。因为Golang可以跨平台编译,我尝试着把系统选择成Linux,CPU架构选择arm,然后在手机上运行,然后Android手机上真的运行起了一个http服务器
img_56ba972ed91583155ecda7ac5beb7a31.jpe
惊喜

回到正题,要想开发编写golang,首先要配置好golang的开发环境,golang的配置 传送门
我是在Ubuntu下开发的,新建service.go文件

  1 package main
  2 
  3 import (
  4         "net/http"
  5        )
  6 
  7 func main() {
  9     http.HandleFunc("/",myResponse)
 10     http.ListenAndServe("127.0.0.1:8888",nil)
 11 }
 12 
 13 func myResponse(w http.ResponseWriter,r* http.Request)  {
 14     w.Write([]byte("<html><center> <font size=\"40\">hello I am go service</font></center></html>"))
 15 }

不熟悉go的同学注意下,不要随意回车换行 不要随意回车换行 不要随意回车换行 因为go有点像Python,不是用 “;” 结束的
简单解释一下
http.HandleFunc("/",myResponse)第一个参数是注册http服务的URL,这里我们填写"/",在访问的时候直接localhost:8888 就行了,如果填"/test"访问的时候URL为localhost/test:8888"
http.ListenAndServe("127.0.0.1:8888",nil)第一个参数是要监听的ip和端口,第二个填nil就好了
然后编译运行试试,在本机上运行的程序用默认的编译参数就行go build service.go
然后运行./service
在浏览器中输入URL,成功访问到

img_75ba2fc518ba86780c17fdb2b069454b.png
chrome

下一步我们把这个程序移植到Android上,Android手机必须要有root权限,手机没有root,而又不想root的同学可以用模拟器,只要CPU的指令集参数改一下就行,先在手机上运行一下,我的手机是荣耀6,CPU是海思920,百度到海思920的指令集是arm32的,好的,编译一个
在编译之前我们先修改一下刚才编译的程序的名
执行 GOOS="linux" GOARCH="arm" go build service.go
得到一个可执行文件,用 file命令看一下 file service

service: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped

我们看到这个文件是一个32位的arm程序。ok,复制的Android手机上试试
需要用到的软件

img_3af8cdd6a62370b13e69c52159f91a41.png
Screenshot_2018-04-08-19-17-19.png

“juiceSSH”是用来模拟Linux的shell命令的, “RE文件管理器”用来修改文件的权限,在Android上chmod命令不起作用。
先复制到根目录
然后修改文件的权限
img_f9009e56285bb1e954617851c19b9b8a.png
Screenshot_2018-04-08-19-18-11.png

img_1150a0f11f6be06250d8620262609897.png
Screenshot_2018-04-08-19-18-20.png

然后在juiceSSH里运行,然后去浏览器输入URL看看,
img_71a37ba42f09242f3e6a97b721395bef.png
Screenshot_2018-04-08-19-19-43.png

没问题
接下来编译一个模拟器上的,我用的genymotion,运行的是Google nexus5手机系统,我百度了一下,nexus5用的是高通骁龙800CPU,然后坑来了,骁龙800是arm32的指令集,按理说直接把那个程序复制进去就可以运行了,但是提示 /system/bin/sh: ./service_arm32: not executable: 32-bit ELF file
后来想了想CPU用的是电脑上的,那编译成 X64的试试。还是不行,换成 X86的试试。终于成功了。原来是指令要用电脑CPU的,多少位需要模拟器的。
执行 GOOS="linux" GOARCH="386" go build service.go
复制到模拟器中,然后跟在手机一样,复制到根目录,添加权限。然后用adb shell运行,然后在模拟器的浏览器中发现可以访问
img_3d7ee586cb32ae400d9111c36003e04f.png
genymotion

好了,我们已经在Android上运行一个http服务器了,是不是比较简单

目录
相关文章
|
3月前
|
XML API 网络安全
【安卓】在安卓中使用HTTP协议的最佳实践
【安卓】在安卓中使用HTTP协议的最佳实践
58 4
|
25天前
|
XML 安全 Android开发
Flutter配置Android和IOS允许http访问
Flutter配置Android和IOS允许http访问
32 3
|
26天前
|
缓存 数据安全/隐私保护 UED
代理服务器在HTTP请求中的应用:Ruby实例
代理服务器在HTTP请求中的应用:Ruby实例
|
2月前
|
存储 运维 Java
函数计算产品使用问题之如何使用Python的requests库向HTTP服务器发送GET请求
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
14天前
|
移动开发 网络协议 编译器
实战案例3:C语言实现的HTTP服务器
实战案例3:C语言实现的HTTP服务器
20 0
|
2月前
|
缓存 程序员 开发者
HTTP状态码大全:如何读懂服务器的语言?
大家好,我是小米,今天我们来聊聊HTTP协议中的GET和POST请求。它们在数据传输方式、安全性和应用场景上有不同特点。本文将详细解析它们的区别和特点,帮助你更好地理解和运用这两种请求方式。让我们一起学习吧!
35 1
|
2月前
|
Shell Python
`pytest-httpserver`是一个pytest插件,它允许你在测试期间启动一个轻量级的HTTP服务器,并模拟HTTP请求和响应。
`pytest-httpserver`是一个pytest插件,它允许你在测试期间启动一个轻量级的HTTP服务器,并模拟HTTP请求和响应。
|
1月前
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。
|
3月前
|
缓存 网络协议 安全
Android网络面试题之Http基础和Http1.0的特点
**HTTP基础:GET和POST关键差异在于参数传递方式(GET在URL,POST在请求体),安全性(POST更安全),数据大小限制(POST无限制,GET有限制),速度(GET较快)及用途(GET用于获取,POST用于提交)。面试中常强调POST的安全性、数据量、数据类型支持及速度。HTTP 1.0引入了POST和HEAD方法,支持多种数据格式和缓存,但每个请求需新建TCP连接。**
40 5
|
3月前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
41 2
下一篇
DDNS