在Android手机上搭建一个http服务器
看到标题是不是有点懵,在Android手机上搭建一个http服务器???
没错,我们就是要在Android手机上搭建一个http服务器。提到http服务器一般第一反应是Apache,nginx
Android上也能运行Apache,nginx了???
Android手机上当然不能运行这些服务器了,这次在Android上运行的是用Golang写的一个简单的http服务器。因为Golang可以跨平台编译,我尝试着把系统选择成Linux,CPU架构选择arm,然后在手机上运行,然后Android手机上真的运行起了一个http服务器
回到正题,要想开发编写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,成功访问到
下一步我们把这个程序移植到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手机上试试
需要用到的软件
“juiceSSH”是用来模拟Linux的shell命令的, “RE文件管理器”用来修改文件的权限,在Android上chmod命令不起作用。
先复制到根目录
然后修改文件的权限
然后在juiceSSH里运行,然后去浏览器输入URL看看,
没问题
接下来编译一个模拟器上的,我用的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运行,然后在模拟器的浏览器中发现可以访问
好了,我们已经在Android上运行一个http服务器了,是不是比较简单
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
亲测Mac和Linux安装Tomcat,不服来战
一、今天需要使用到本地的Tomcat,结果在网上找了下教程,都是假的,都有问题,都没有经过测试,不负责任啊啊啊,坑爹坑爹。 Mac正确安装Tomcat的姿势 首先访问一下Tomcat的官网: Tomcat官网 想下载什么版本就点击什么版本 二、下面以Tomcat9为例,Mac和Linux的一定要下载tar.gz文件,其余的都有问题 三、解压后,重命名文件夹 四、通过终端进入到Tomcat的bin目录下 ~/Develop/Tomcat/tomcat9/bin ⌚ 19:16:26 $ pwd /Users/wangdong/Develop/Tomcat/tomcat9/bin ~/Develop/Tomcat/tomcat9/bin ⌚ 19:16:29 $ ls bootstrap.jar setclasspath.bat catalina-tasks.xml setclasspath.sh catalina.bat shutdown.bat catalina.sh shutdown.sh ciphers.bat startup.bat ciphers.sh startup.sh c...
- 下一篇
【转】宽字节注入详解
前言 在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等,还有一种情况是magic_quote_gpc,不过高版本的PHP将去除这个特性。 首先,宽字节注入与HTML页面编码是无关的,笔者曾经看到 <meta charset=utf8> 就放弃了尝试,这是一个误区,SQL注入不是XSS。虽然他们中编码的成因相似,不过发生的地点不同。 很多网上的材料都说程序使用了宽字节来处理程序,却又不指出具体是指什么程序。本文就介绍一下具体漏洞发生的原理与简单的利用。在这里我们限定使用的语言是PHP5.4,数据库MYSQL5.6。 涉及到的一些概念 字符、字符集与字符序 字符(character)是组成字符集(characterset)的基本单位。对字符赋予一个数值(encoding)来确定这个字符在该字符集中的位置。 字符序(collation)指同一字符集内字符间的比较规则。 UTF8 由于ASCII表示的字符只有128个,因此网络世界的规范是使用UNICODE编码,但是用A...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker安装Oracle12C,快速搭建Oracle学习环境