如何用node.js 获取访问者的公网IP

如何用node.js 获取访问者的公网IP,第1张

在mac上获取本地IP地址

var os = require('os');

var IPv4,hostName;

hostName=oshostname();

for(var i=0;i<osnetworkInterfaces()en0length;i++){

if(osnetworkInterfaces()en0[i]family=='IPv4'){

IPv4=osnetworkInterfaces()en0[i]address;

}

}

consolelog('----------local IP: '+IPv4);

consolelog('----------local host: '+hostName);

在ubuntu server上获取本地IP地址

var os = require('os');

var IPv4,hostName;

hostName=oshostname();

for(var i=0;i<osnetworkInterfaces()eth0length;i++){

if(osnetworkInterfaces()eth0[i]family=='IPv4'){

IPv4=osnetworkInterfaces()eth0[i]address;

}

}

function readLog(date,type,operation){//函数接受3个参数,日期、精度(天时分秒)和 *** 作(查找、刷新或者默认)        if(date){        //如果有时间参数则对时间参数进行处理(一般日志名称都是时间加类型)            var dataStr = arguments[0];            var date = dataStrslice(0,10);            var hour = dataStrslice(11,13);            var minute = dataStrslice(11,16);            var second =dataStrslice(11,19);            var type = arguments[1];            //获取精度

        }else{        //若无时间参数则获取当前时间,然后精度默认            var date = new Date(+new Date()+836001000)toISOString()replace(/T/g,' ')replace(/\[\d]{3}Z/,'')slice(0,10);            var type=null;

        }        var op = arguments[2];        var countResult = 0;        //对日志结果进行统计        var logPath = appDirNameslice(0,-3)+'log\\'+'ivsvr_'+date+'log';        //拼接日志文件名称        var logStr = '';

        fsstat(logPath, function (err, stats) {        //获取对应的日志文件状态        if(err){        //日志不存在或者异常处理信息

            $('#logTipInfo tr td')html('无日志信息可供查看');            consolelog(err);

        }else{            var lineCount = 0;            var readline = require('readline');            var fReadName = logPath;            var fRead = fscreateReadStream(fReadName);            var objReadline = readlinecreateInterface({                input: fRead,

            });            //按行读取日志

            objReadlineon('line', (line)=>{                var itemStr = $trim(line);                var time = itemStrslice(0,19);                var content = itemStrsubstr(20);                if(!time || !content){return;}

                ++ lineCount;                //计数行数                var matched = true;                var itemStr = $trim(line);                var itemArr = itemStrsplit(' ');                var logDate = itemArr[0];                var logTime = itemArr[1];                var time = logDate+' '+logTime;                switch(type){                //进度查找过滤                    case '0':                    case null:

                        matched = true;                        break;                    case '1':                        var timeSplit = logTimeslice(0,2);                        if(timeSplit == hour){

                            matched = true;                            break;

                        }

                        matched = false;                        break;                    case '2':                        var timeSplit = logTimeslice(0,5);                        if(timeSplit == minute){

                            matched = true;                            break;

                        }

                        matched = false;                        break;                    case '3':                        var timeSplit = logTimeslice(0,8);                        if(timeSplit == second){

                            matched = true;                            break;

                        }

                        matched = false;                        break;                    default:                        consolelog('unkonw type!');                        break;

                }                if(matched === true &&(lineCount>logReadFlag)){                //日志结果格式化输出呈现

                    countResult ++;                    var result = itemArr[2];                    if(result == 'err'){                        var operation = itemArr[4];

                        result = '失败:'+itemArr[5]+' '+(itemArr[6]itemArr[6]:'');

                    }else{                        var operation = itemArr[4]+' '+itemArr[5]+(itemArr[6]itemArr[6]:'');

                        result = '成功';

                    }

                    logStr += '<tr><td>'+time+'</td><td>'+operation+'</td><td>'+result+'</td></tr>'

                }

                logStr += '<tr><td>'+time+'</td><td>'+content+'</td></tr>'

            });            objReadlineon('close', ()=>{                if(logReadFlag == 0 && (logStr == '')){                    var info = '无日志信息可供查看';

                }                if(logReadFlag >0 && (logStr != '')){                    var newLogNum = lineCount - logReadFlag;                    var info = '刷新成功,更新'+newLogNum+'条日志!';

                    $('#logInfoTable')prepend(logStr);

                }else if(logReadFlag >0 && (logStr == '')){                    var info = '刷新成功,无日志更新!';

                }else{

                    $('#logInfoTable')html(logStr);

                }                if(op == 'search'){                    var info = '查找到'+countResult+'条日志';

                }

                $('#logTipInfo tr td')html(info);                if((op == 'search' || op == 'refresh') &&(logReadFlag != 0 || newLogNum >0 || countResult >0)){

                    setTimeout(function() {$('#logTipInfo')fadeOut(567);}, 2000);                    // *** 作结束后给出信息反馈,反馈自动淡出消失

                }                else{

                    $('#logTipInfo')hide();

                }

                logReadFlag = lineCount;                consolelog('closed');

            });

        }

    });

}

nodejs 运行代码可以在命令行中使用命令“ node /path/xxxjs ”来执行

所以我们可以借助 java 的 Runtime 类,可以执行系统本地的命令, 例如:

Linux系统下:RuntimegetRuntime()exec("node /path/xxxjs");

Window系统下:RuntimegetRuntime()exec("cmd /c node /path/xxxjs");

当然推荐使用 Apache-Commons-Exec 工具类,可以屏蔽不同系统命令差异,并且获取结果更简单

工具类使用可以参考此文: 网页链接

方法说明:

该函数用来创建一个>

以上就是关于如何用node.js 获取访问者的公网IP全部的内容,包括:如何用node.js 获取访问者的公网IP、nodejs怎么获取当前请求的日志、请问怎么写java调用node环境运行js代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9763152.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存