/**
* 静态文件服务器测试例子
* User: xuwm
* Date: 13-5-17
* Time: 上午8:38
* To change this template use File | Settings | File Templates.
*/
var port=3333
var http = require("http")
var url = require("url")
var fs = require("fs")
var path = require("path")
var mime = require("./mime").types
var config = require("./config")
var zlib = require("zlib")
//创建http服务端
var server=http.createServer(function(request,response){
var obj= url.parse(request.url)
response.setHeader("Server","Node/V8")
console.log(obj)
var pathname=obj.pathname
if(pathname.slice(-1)==="/"){
pathname=pathname+config.Welcome.file //默认取当前默认下的index.html
}
var realPath = path.join("assets", path.normalize(pathname.replace(/\.\./g, "")))
console.log(realPath)
var pathHandle=function(realPath){
//用fs.stat方法获取文件
fs.stat(realPath,function(err,stats){
if(err){
response.writeHead(404,"not found",{'Content-Type':'text/plain'})
response.write("the request "+realPath+" is not found")
response.end()
}else{
if(stats.isDirectory()){
}else{
var ext = path.extname(realPath)
ext = ext ? ext.slice(1) : 'unknown'
var contentType = mime[ext] || "text/plain"
response.setHeader("Content-Type", contentType)
var lastModified = stats.mtime.toUTCString()
var ifModifiedSince = "If-Modified-Since".toLowerCase()
response.setHeader("Last-Modified", lastModified)
if (ext.match(config.Expires.fileMatch)) {
var expires = new Date()
expires.setTime(expires.getTime() + config.Expires.maxAge * 1000)
response.setHeader("Expires", expires.toUTCString())
response.setHeader("Cache-Control", "max-age=" + config.Expires.maxAge)
}
if (request.headers[ifModifiedSince] &&lastModified == request.headers[ifModifiedSince]) {
console.log("从浏览器cache里取")
response.writeHead(304, "Not Modified")
response.end()
} else {
var raw = fs.createReadStream(realPath)
var acceptEncoding = request.headers['accept-encoding'] || ""
var matched = ext.match(config.Compress.match)
if (matched &&acceptEncoding.match(/\bgzip\b/)) {
response.writeHead(200, "Ok", {'Content-Encoding': 'gzip'})
raw.pipe(zlib.createGzip()).pipe(response)
} else if (matched &&acceptEncoding.match(/\bdeflate\b/)) {
response.writeHead(200, "Ok", {'Content-Encoding': 'deflate'})
raw.pipe(zlib.createDeflate()).pipe(response)
} else {
response.writeHead(200, "Ok")
raw.pipe(response)
}
}
}
}
})
}
pathHandle(realPath)
})
server.listen(port)
console.log("http server run in port:"+port)
首先需要在JS文件里创建一个assets的文件夹,里面放入你要浏览的静态文件,比如,index.html,demo.js等。
运行方式为:在命令行里切换到上面的JS的文件目录,然后输入 node JS文件名
一、静态IP与动态IP区别:
1、动态IP需要在连接网络时自动获取IP地址以供用户正常上网,而静态IP是ISP在装机时分配给用户的IP地址,可以直接连接上网,不需要获取IP地址。
静态IP是可以直接上网的IP段,该IP在ISP装机时会划分一个IP地址给你,让计算机在连接网络时不再自动获取网络地址,避免了网络连接上的困扰。
2、动态IP和静态IP对网速的影响,ISP对每个用户所提供的网速,并不是从IP地址限定的,而是从用户连接到ISP的物理线路上进行限定的。
3、ISP分配的静态IP地址ISP赠送IP地址的情况是不可能存在的。准确的应该说是ISP将IP地址租借给用户使用。因为在目前IPv4地址已经分配完毕,严重稀缺的情况下。ISP是不可能随便将一个IP地址赠送给用户的。
二、静态IP与动态IP使用。
1、动态IP上网,又叫做DHCP上网。自动获取IP上网。动态IP这种上网方式,在未使用路由器的情况下,只需要把这根宽带网线连接到电脑上,电脑上的IP地址设置为自动获得,电脑就可以实现上网了。
2、静态IP上网,又叫做固定IP地址上网。这种上网方式,宽带运营商会提供一根一个IP地址、子网掩码、网关和DNS服务器地址给用户。在未使用路由器的情况下,只需要把这根入户网线连接到电脑上,并且手动设置电脑上的IP地址,这样电脑才能上网。
扩展资料:公有地址由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
私有地址:属于非注册地址,专门为组织机构内部使用。以下列出留用的内部私有地址A类 10.0.0.0--10.255.255.255B类 172.16.0.0--172.31.255.255C类 192.168.0.0--192.168.255.255
对于一个设立了因特网服务的组织机构,由于其主机对外开放了诸如WWW 、FTP 、E-mail等访问服务,通常要对外公布一个固定的IP地址,以方便用户访问。
当然,数字IP不便记忆和识别,人们更习惯于通过域名来访问主机,而域名实际上仍然需要被域名服务器翻译为IP地址。例如,你的主页地址,用户可以方便地记忆和使用,而域名服务器会将这个域名翻译为101.12.123.234,这才是你在网上的真正地址。
参考资料:百度百科-静态IP
参考资料:百度百科-动态IP
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)