用HTTP File Server在内网环境下搭建外网可访问的个人服务器问题
DMZ主机是完全将内网的一台计算机暴露给外网。
端口映射的只是将内网计算机的某个端口开放给外网去访问
所以,你的这个情况,用端口映射完全可以
设置如下:
内网计算机IP 19216812
无线路由器 19216811
开放WEB端口80,FTP端口21
设置--端口映射
端口80
协议TCP
IP地址 19216812
非常简单,现在的路由器都是超级简单的。
修改webxml 把listings 改成 true 添加 sortListings 为true
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>orgapachecatalinaservletsDefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>sortListings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
打开控制面板,选择并进入“程序”,双击“打开或关闭Windows服务”,在弹出的窗口中选择“Internet信息服务”下面所有地选项,点击确定后,开始更新服务。
更新完成后,打开浏览器,输入“http://localhost/”回车,如果此时出现IIS7欢迎界面,说明Web服务器已经搭建成功。
当web服务器搭建成功后,我们下一步所要做的就是把我们开发的网站安装到Web服务器的目录中。一般情况下,当Web服务器安装完成后,会创建路径“%系统根目录%inetpub/wwwroot”,将我们开发的网站COPY到该路径下。即可实现本地访问该网站。
设置防火墙,让局域网当其它计算机也能访问本地网站资源。具体方法:打开控制面板,选择“系统和安全”,点击“允许程序通过Windows防火墙”,在弹出的对话框中勾选“万维网服务HTTP”右侧的两个复选框,最后点击确定退出。
5
在局域网中其它计算机上,打开浏览器,输入 “http://Web服务器的IP地址/”按回车键,就可以访问服务器上的资源”。 经过以上步骤的设置,局域网中的其它用户就可以通过浏览器访问你所共享的web资源了!
1Nodejs安装包及源码下载地址为:https://nodejsorg/en/download/
Git下载地址为:https://git-scmcom/download/win。
2按照安装提示操作即可,选择安装路径、npm。
3环境变量默认C:\Users\Administrator\AppData\Roaming\npm\node_modules。
创建新的变量
创建方法:我的电脑>属性》高级系统设置》环境变量》,创建名NODE_PATH,值为nodejs的当前安装目录。
命令行工具是运行在当前计算机用户下的,所以开头总是C:/Users/XXX/Desktop>,而不会跟你的nodejs安装的位置有关。
安装node后,在cmd里有两种模式,开发模式和命令行模式,要进入开发模式直接输入node回车即可,此时可以输入代码,比如require ("express"),如果直接在命令行模式下输入require类的语句是会报错的,提示'require'不是内部或外部命令,也不是可运行的程序或批处理文件。从开发模式退出可用exit命令也可以用快捷捷,ctrl+D或两次ctrl+C
4创建应用
我们先创建一个项目目录,目录可自己定义,本案例的目录为 e:/node/serve。
由于我们要搭建的是服务器,所以我把第一个文件命名为serverjs。
在serverjs里面输入以下代码:
const http = require('http');//实例化“http”
const hostname = '127001';
const port = 3000;
const server = httpcreateServer((req, res) => {
resstatusCode = 200; //状态值200:OK
ressetHeader('Content-Type', 'text/plain'); //内容类型:text/plain
resend('Hello World\n'); //响应结果“hello world”
});
serverlisten(port, hostname, () => { //实现监听
consolelog(`Server running at http://${hostname}:${port}/`);
});
5应用执行
打开git命令行,输入cd e:/node/serve/
之后输入node servicejs
1、进入Windows7的控制面板,[打开程序功能],选择[打开或关闭Windows功能]
2、在安装Windows功能的选项菜单,把interlnet信息服务的所有组件全部勾选起来,
internet 信息服务器、web 管理工具、万维网服务下的所有组件。
3、配置完成后,打开控制面板——进入系统和安全——打开管理工具——点Internet 信息服务(IIS)管理器。进行IIS配置。
4、打开IIS管理器,进入管理页面,展开右边的个人PC栏,右击网站——添加网站,
在对话框中输入自己的网站名称、物理路径(网站文件存放位置),记得要设置网站文件夹的安全项,添加一个Everyone用户,设置所有权限控制即可,最后点确定。
5、双击IIS7中ASP功能,父路径是没有启用的,选择True开启。
点击右边的高级设置选项,可以修改网站的文件夹
单击右侧的绑定,可以修改网站所用的端口,
默认文档,你还可以添加网站打开后自动读取的默认文档名的后缀
6、如果是本地访问,你可以使用127001来访问所搭建的IIS网站,如果是外网你则需要有一个固定IP,或是通过路由器转发,当然你可以使用花生壳之类的动态域名工具来绑定动态IP。
通过widows7的IIS配置及网站的搭建,我们可以很方便的调试WEB程序,甚至我们自己可以在电脑上开设网站。
转载 这种功能实际上就是数据同步,同时要考虑手机本身、电量、网络流量等等限制因素,所以通常在移动端上有一下两个解决方案:
1一种是定时去server查询数据,通常是使用HTTP协议来访问web服务器,称Polling(轮询);
2还有一种是移动端和服务器建立长连接,使用XMPP长连接,称Push(推送)。
从耗费的电量、流量和数据延迟性各方面来说,Push有明显的优势。但是使用Push的缺点是:
对于客户端:实现和维护相对成本高,在移动无线网络下维护长连接,相对有一些技术上的开发难度。
对于服务器:如何实现多核并发,cpu作业调度,数量庞大的长连接并发维护等技术,仍存在开发难点。
在讲述Push方案的原理前,我们先了解一下移动无线网络的特点。
移动无线网络的特点:
因为 IP v4 的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器通讯
GGSN(Gateway GPRS
Support Node 网关GPRS支持结点)模块就实现了NAT功能。
因为大部分移动无线网络运营商都是为了减少网关的NAT映射表的负荷,所以如果发现链路中有一段时间没有数据通讯时,会删除其对应表,造成链路中断。(关于NAT的作用及其原理可以查看我的另一篇博文:关于使用UDP(TCP)跨局域网,NAT穿透的心得)
Push在Android平台上长连接的实现:
既然我们知道我们移动端要和Internet进行通信,必须通过运营商的网关,所以,为了不让NAT映射表失效,我们需要定时向Internet发送数据,因为只是为了不然NAT映射表失效,所以只需发送长度为0的数据即可。
这时候就要用到定时器,在android系统上,定时器通常有一下两种:
1javautilTimer
2androidappAlarmManager
分析:
Timer:可以按照计划或者时间周期来执行相关的任务。但是Timer需要用WakeLock来让CPU保持唤醒状态,才能保证任务的执行,这样子会消耗大量流量;当CPU处于休眠的时候,就不能唤醒执行任务,所以应用于移动端明显是不合适。
AlarmManager:AlarmManager类是属于android系统封装好来管理RTC模块的管理类。这里就涉及到RTC模块,要更好地了解两者的区别,就要明白两者真正的区别。
RTC(Real- Time Clock)实时闹钟在一个嵌入式系统中,通常采用RTC
来提供可靠的系统时间,包括时分秒和年月日等;而且要求在系统处于关机状态下它也能够正常工作(通常采用后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32768KHz
晶体和电阻电容等。(如果对这方面感兴趣,可以自己查阅相关资料,这里就说个大概)
好了,回来正题。所以,AlarmManager又称全局定时闹钟。这意味着,当我用使用AlarmManager来定时执行任务,CPU可以正常地休眠,只有在执行任务是,才唤醒CPU,这个过程是很短时间的。
下面简单来说明其使用:
1类似于Timer功能:
//获得闹钟管理器
AlarmManager
am = (AlarmManager)getSystemService(ALARM_SERVICE);
//设置任务执行计划
amsetRepeating(AlarmManagerELAPSED_REALTIME, firstTime, 51000,
sender);//从firstTime才开始执行,每隔5秒再执行
2实现全局定时功能:
//获得闹钟管理器
AlarmManager
am = (AlarmManager)getSystemService(ALARM_SERVICE);
//设置任务执行计划
amsetRepeating(AlarmManagerELAPSED_REALTIME_WAKEUP, firstTime,
51000, sender);//从firstTime才开始执行,每隔5秒再执行
总结:在android客户端使用Push推送时,应该使用AlarmManager来实现心跳功能,使其真正实现长连接。
0条评论