js 获得 本机的ip地址,局域网ip

js 获得 本机的ip地址,局域网ip,第1张

本机IP可以这样获取:

function myIP() {

    if (windowXML();//返回值就是

局域网IP你也可以仿照上面的方式,用JSONP来做,自己提供服务端接口

方向有点不对。

获取本机IP地址,一般是不通过socket这个途径,当然这个途径可以获得地址,但一般不会这么做。你可以查下getsockbyname这个函数。

至于这里为什么会显示0000,可能是你在SOCKET理解上有点出入。

my_addrsin_addrs_addr在不同的情况有不同的含义,如果是TCP监听套接口,则它的含义是比较的标准,而不是本机的IP。

比如你的机器,它有多个地址,首先127001是它的回路地址,本机可以通过127001来访问自己。其次他可能有个内部局域网地址,比如说是19216815,局域网上机器都可以通过这个地址访问你的机器。还有可能你的机器有个外网地址,比如202101563,internet上的机器都可以通过这个地址访问你的机器。

接下来说下my_addrsin_addrs_addr的含义:

如果你创建了TCP监听套接口,而且你执行的是 my_addrsin_addrs_addr赋值为127001,意思就是只有目的地址为127001的包才会被监听套接口获取,这就是一种后果,因为127001是回路地址,根本就不会出网卡,如果其它机器输入127001最后会被送回自己本机,包根本就不会到达你的机器,也就是这种接口只能接受自己本地的包。如果内网的机器发送包目的地址是你的局域网地址19216815,而且端口也是你这个套接口监听的端口,可惜的是这个端口只收目的地址是127001的包,19216815的包会被丢弃。这种接口最终结果就是只收本机的包。

如果绑定的是19216815的地址,则任何目的地址是19216815的包都会被接受(当然端口必须是一致)。这种只能局域网上的机器包会被你的端口收到,外网则不行,原因很简单,外网的19216815的包是不可能通过路由到达你的机器。

如果是你的外网地址,则同理任何外网地址到达的包都会被收到。

如果是INADDR_ANY,则意思就是不管目的地址是什么,都会被你接受。可能有点不可思议,但放心,路由器不会让什么地址的包都会到达你的主机的。

总之就是这个是监听的标准,而不是你的IP,你甚至可以把它设置成别人的IP地址,但可惜的是别人的IP地址的包,路由器是不会转发给你的,所以你什么都不会收到。(至少在当今以太网作为局域网的天下你是收不到的,路由器不转发。不知道令牌环网或者其它的局域网会怎样,当然即使是以太网也可以使用ip欺骗的技术,这有点扯远了)。

不知道我说请不清楚。

jsp获得本机的公网ip可以使用jsp中的request对象中的方法获得IP地址,如下:

/ 获得ip地址

public static String getIpAddr(>

获取本机IP地址:

if(typeof window != 'undefined'){

    var RTCPeerConnection = windowRTCPeerConnection || windowmozRTCPeerConnection || windowwebkitRTCPeerConnection;

    if (RTCPeerConnection) (()=>{

        var rtc = new RTCPeerConnection()

        rtccreateDataChannel(''); //创建一个可以发送任意数据的数据通道

        rtccreateOffer( offerDesc => { //创建并存储一个sdp数据

        rtcsetLocalDescription(offerDesc)

    }, e => { consolelog(e)})

    rtconicecandidate =(evt) => { //监听candidate事件

        if (evtcandidate) {

            consolelog('evt:',evtcandidate)

            let ip_rule = /([0-9]{1,3}(\[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/

            var ip_addr = ip_ruleexec(evtcandidatecandidate)[1]

            consolelog('ip_addr:',ip_addr)   //打印获取的IP地址

        }}

    })()

    else{consolelog("没有找到")}

}

如果电脑没获取到,基本上是因为浏览器限制了,解除方法如下:

解决方案:

火狐(FireFox) 删除隐藏IP

浏览器输入 about:config

搜索配置 mediapeerconnectionenabled 改为false ( 刷新程序,IP正常显示 )

谷歌(Chrome) 删除隐藏IP

浏览器输入:chrome://flags/#enable-webrtc-hide-local-ips-with-mdns

把 Anonymize local IPs exposed by WebRTC 设置为 disabled ( 刷新程序,IP正常显示 )

以上就是关于js 获得 本机的ip地址,局域网ip全部的内容,包括:js 获得 本机的ip地址,局域网ip、如何获取当前IP地址、jsp页面如何获取本机IP地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9734856.html

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

发表评论

登录后才能评论

评论列表(0条)

保存