如何利用安卓手机搭建WEB服务器

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-06
如何用nodejs搭建web服务器

使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块、文件系统、url解析模块、路径解析模块、以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器。
作为一个Web服务器应具备以下几个功能:
1、能显示以.html/.htm结尾的Web页面
2、能直接打开以.js/.css/.json/.text结尾的文件内容
3、显示图片资源
4、自动下载以.apk/.docx/.zip结尾的文件
5、形如http://xxx.com/a/b/ , 则查找b目录下是否有index.html,如果有就显示,如果没有就列出该目录下的所有文件及文件夹,并可以进一步访问。
6、形如http://xxx.com/a/b, 则作301重定向到http://xxx.com/a/b/ , 这样可以解决内部资源引用错位的问题。

引入需要用到的几个模块:

//http协议模块var http = require('http');//url解析模块var url = require('url');//文件系统模块var fs = require("fs");//路径解析模块var path = require("path");创建服务并在指定的端口监听:

//创建一个服务var httpServer = http.createServer(this.processRequest.bind(this)); //在指定的端口监听服务httpServer.listen(port,function(){ console.log("[HttpServer][Start]","runing at http://"+ip+":"+port+"/"); console.timeEnd("[HttpServer][Start]");});


在创建服务的时候需要传递一个匿名函数processRequest 对请求进行处理,processRequest接收2个参数,分别是request和response, request对象中包含了请求的所有内容,response是用来设置响应头以及对客户端做出响应操作。

processRequest:function(request,response){ var hasExt = true; var requestUrl = request.url; var pathName = url.parse(requestUrl).pathname; //对请求的路径进行解码,防止中文乱码 pathName = decodeURI(pathName); //如果路径中没有扩展名 if(path.extname(pathName) === ''){ //如果不是以/结尾的,加/并作301重定向 if (pathName.charAt(pathName.length-1) != "/"){ pathName += "/"; var redirect = "http://"+request.headers.host + pathName; response.writeHead(301, { location:redirect }); response.end(); return ; } //添加默认的访问页面,但这个页面不一定存在,后面会处理 pathName += "index.html"; hasExt = false; //标记默认页面是程序自动添加的 } //获取资源文件的相对路径 var filePath = path.join("http/webroot",pathName); //获取对应文件的文档类型 var contentType = this.getContentType(filePath); //如果文件名存在 fs.exists(filePath,function(exists){ if(exists){ response.writeHead(200, {"content-type":contentType}); var stream = fs.createReadStream(filePath,{flags:"r",encoding:null}); stream.on("error", function() { response.writeHead(500,{"content-type": "text/html"}); response.end("500 Server Error"); }); //返回文件内容 stream.pipe(response); }else { //文件名不存在的情况 if(hasExt){ //如果这个文件不是程序自动添加的,直接返回404 response.writeHead(404, {"content-type": "text/html"}); response.end("404 Not Found"); }else { //如果文件是程序自动添加的且不存在,则表示用户希望访问的是该目录下的文件列表 var html = ""; try{ //用户访问目录 var filedir = filePath.substring(0,filePath.lastIndexOf('\\')); //获取用户访问路径下的文件列表 var files = fs.readdirSync(filedir); //将访问路径下的所以文件一一列举出来,并添加超链接,以便用户进一步访问 for(var i in files){ var filename = files[i]; html += ""+filename+""; } }catch (e){ html += "您访问的目录不存在" } response.writeHead(200, {"content-type": "text/html"}); response.end(html); } } });}

请求处理函数中有几个重点需要说一下:
对于路径中有中文的,浏览器会自动进行编码(英文不变,中文会变),因此在接收到地址后,需要对地址进行解码,否则最后得到的路径和真实路径不相符,
当访问路径不是以具体的文件结尾,并且不是以/结尾,则需要通过重定向加上/,表示当前目录,否则当前路径下的静态资源会找不到
如果访问路径是目录,则列出该目录下所有文件及文件夹,并可以点击访问,为了让中文目录能正常显示,则还要在header中设置charset=utf-8

核心代码就这么多,大概140行左右,完整的代码已上传到github:https://github.com/git-onepixel/Node,
如果要运行demo,打开cmd切换到根目录,运行node start 即可。

1:IIS是微软件的东西,你觉得微软会允许自己开发的软件安装到别的系统上去吗?ASP没必要搞这么折腾,搞个Windows服务器算了。
2:另外,WEB服务器不是搭建在安卓上面,而是另建服务器。
3:安卓上面是建不了WEB服务器的。

1.安装手机本地php+mysql服务器环境篇 :
1.1安装ksweb软件,安装好ksweb后,会在手机上生成一个文件夹htdocs,其目录是mnt/sdcard/htdocs,htdocs是网站的根目录。
1.2安装mysql 直接点击mysql管理,点击选择“是”然后解压便可自动安装。mysql的账号密码随后再改(在设置里面更改)。

1.3安装好MySQL之后,(如下图,打开phpmyadmin,表示安装成功!),另外,我们需要对ksweb进行一些设置方可更好使用。
1.3.1端口的更改步骤:(启用root→更改80端口)手机服务器启用root方法如下图,在ksweb设置里面把root打钩。
1.3.2开启手机80端口方法:把8080端口改为80端口,并把PHP服务,MySQL都打勾。其他一些设置比如MySQL密码,开机自启动等选项大家根据需要自行修改即可!

1.4ksweb全部设置好后,我们打开手机本地服务器地址localhost:80,表示设置好了。
我们点击页面中的“Enter KSWEB Web Interface”可以看到手机服务器的一些配置信息(默认账号密码都是“admin”)。表示手机服务搭建成功,一切正常!

2.利用nat123软件进行内网80端口映射篇:
2.1注册账号,我们先到其官网注册账号官网,大家百度nat123即可,至于怎么注册我就不说了。
2.2登陆并添加域名解析,
2.2.1 应用名称,我填的是网络电视直播—在线看电视。假如你要搭建自己的博客,你可以填XX的博客,或者XX的个人博客等。
2.2.2 内网端口,只有root的手机才填80端口,所以这也是为什么一开始我说手机需要root!
2.2.3 内网地址这个默认localhost就行。
2.2.4 外网域名,我这里使用的是自己的域名(当使用自己的域名时,用cname解析,下面有当前唯一cname地址,我们在自己的域名解析里面填这个就行)。如果我们没有自己的域名,我们可以用官方免费的二级域名,注意他的格式)一切填好之后,点击确认保存即可!

2.3 我们下载并安装登陆安卓版的nat123,就自动解析了,

3.4 接下来我们在另一台电脑上输入刚才的域名访问 如下图所示,表示安卓手机web服务器安装成功,网站搭建成功!

  • 安卓java开发环境安卓java开发
    答:如何利用java做android?使用J2EE技术或者叫JavaWeb技术开发一个Web服务器,服务器返回Json数据,android客户端解析json数据,使用http协议和服务器通信,android有相应模块和API。首先楼主得懂Java后台也就是JavaEE,用Servlet搭建Web服务,Serlvet映射一个URL,Android请求这个URL,Servlet处理请求,然后就是Java...
  • 废旧Android手机如何改造成Linux服务器?
    答:我们可以将废旧的安卓手机作为一个服务器来使用,在上面构建一些数据和网站。之后利用网络对其进行访问。 Linux的服务器具有安全、稳定的特点 ,非常适合于学生党用于服务器的基础学习。如何实现Linux服务器的搭建? 首先我们需要准备一台如问题所说的废旧安卓手机,这是你将来的服务器基准。不过要注意的...
  • 如何快速搭建一个手机网站
    答:总结:我觉得只要涉及到什么设计的版块,客户如果有要求的话,网站页面一定要高大上一点客户而服务商关心的是工作量问题,在一面接受你的要求的同时,尽可能的减少己方的工作量,这个矛盾就导致了,双方执行标准不一致的情况,一定要找靠谱的服务商,后期什么程序不稳定啊,数据丢失啊都有可能发生。
  • 简述建立web服务器的过程(建立web个人网站的方法)
    答:web服务器——boa本文演示了如何将boa移植到开发板上。boa是一个小型web服务器,只有70KB的可执行代码,占用系统资源少,速度快,安全性高。Boa官网:www.boa.org下载版本:boa-0.94.13.tar.gz在本文中,web服务器的使用取决于网络。可以参考我们上次的笔记搭建开发板的WiFi环境:实用boa交叉编译下载...
  • 如何在安卓手机中搭建一个支持asp的服务器
    答:ASP没必要搞这么折腾,WEB服务器不是搭建在安卓上面,而是另建服务器。安卓上面是建不了WEB服务器的。Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”...
  • 网站服务器是什么 网站服务器怎么搭建【详解】
    答:Internet服务管理工具:用来在本机管理你的站点。 Internet服务管理工具(HTML):是HTML形式的站点管理工具,拥有大部分的管理功能,并且可以远程管理你的站点。 World Wide Web服务器 : 这是服务程序的核心Web服务程序,并且内置了对ASP的支持。 有了上述组件,就可以建立起动态交互Web网站。 其他几个组件的简介如下 : 文...
  • 想请问一下,该如何在手机上部署tomcat,是手机能打开jsp网页呢?_百度知...
    答:首先你要明白B/S 响应机制,通过PC端或手机端 浏览器 请求Web 服务器 请求服务可以是利用Tomcat 的发布的服务,也可以是其他的中间件如:jboss,weblogic,websphere 等,它可以提供解析服务和接受来自客户端的请求。以上是原理,然后说下你所提到的问题,如何利用手机查看自己开发的JSP页面,首先利用发布...
  • 如何用Java实现Web服务器?
    答:WEB容器工作原理 市面上的javaweb容器常见的有两种,一种是jetty,一种是tomcat。要想用java实现web容器,首先要知道其工作原理。以Tomcat为例,我们通常开发出来的war包,会放在tomcat中的webapp下面,tomcat会自动解压war包。解压完成后,其实就是一个servlet应用!换句话说,我们写的war包中的servlet应用...
  • 我想搭建一台供手机访问的服务器,求适合的架构及做法.
    答:另外一种就是提供网站服务的虚拟主机,ASP比较过时了,要么用ASP.NET(若你习惯微软的环境),要么还是用php吧。后者的主机比较容易找一般也相对便宜。你熟悉Java的话,JSP也可以。这种情况下,通讯使用HTTP协议,你在手机上使用HTTP的API和服务器通讯。HTTP协议是上层应用协议,相当于在TCP上包了一层。...
  • 台式电脑连接安卓手机怎么上网
    答:4、进入打开网络和共享中心”后,点击左上方的“更改适配器设备”。5、选定并右击“本地链接”,选择与点击“属性”。6、点击”共享“中的”Internet链接共享“,勾选”允许其他网络用户通过此计算机的Internet链接“,点击”设置“,在出来的高级设置对话框中,勾选”Web服务器和安全Web服务器“,最后按...