node.js 搭载的一个服务器,局域网内,都可以访问

var 
http = require('http'),
url  = require('url'),
path = require('path'),
fs   = require('fs'),
os   = require('os');

function getIPv4(){
   var interfaces = os.networkInterfaces();//获取网络接口列表
   var ipv4s = [];//同一接口可能有不止一个IP4v地址,所以用数组存

    Object.keys(interfaces).forEach(function (key){
        interfaces[key].forEach(function (item){

            //跳过IPv6 和 '127.0.0.1'
            if ( 'IPv4' !== item.family || item.internal !== false )return;

            ipv4s.push(item.address);//可用的ipv4s加入数组
            console.log(key+'--'+item.address);
        })        
    })

	return ipv4s[0];//返回一个可用的即可
}

var mime = {
   "html": "text/html",
   "htm": "text/html",
   "css": "text/css",
   "js": "text/javascript",
   "xml": "text/xml",
   "json": "application/json",
   "jpg": "image/jpeg",
   "jpeg": "image/jpeg",
   "png": "image/png",
   "gif": "image/gif",
   "bmp": "image/bmp",
   "svg": "image/svg+xml",
   "ico": "image/x-icon",
   "mp3": "audio/mpeg",
   "wav": "audio/x-wav",
   "mp4": "video/mp4",
   "swf": "application/x-shockwave-flash",
   "woff": "application/x-font-woff"

}


var server = http.createServer(function (req,res){

    var pathname = url.parse(req.url).pathname;;
	var filename = 'D:/WebStorm_WorkPace/potted_plant'+pathname;
    var extname = path.extname(filename);


	 //扩展名含点号如'.html',截掉
     extname = extname ? extname.slice(1) : 'unknown';
    //映射表中查找请求的资源的MIME类型并返回,没有映射均返回'text/plain'类型
    var resContentType = mime[extname] || 'text/plain';

    fs.exists(filename,function (exists){
        if (!exists){
            //文件不存在返回404
            res.writeHead(404,{'Content-Type':'text/plain'});
            res.write('404 Not Found');
            res.end();
        }else {
            //文件存在读取并返回
            fs.readFile(filename,function (err,data){
                if (err){
                    res.writeHead(500,{'Content-Type':'text/plain'});
                    res.end(err);
                }else{
                    res.writeHead(200,{'Content-Type':resContentType});
                    res.write(data);
                    res.end();
                }
            })
        }
    })

});

server.listen('8080',function (){
    console.log('server start on: '+getIPv4()+':8080');
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值