【发布时间】:2019-11-04 18:53:44
【问题描述】:
我一直在使用以下代码来检测运行某些专有软件的客户端的 LAN IP 地址(请不要“你不应该这样做”,我没有编写代码)。
function ip_local()
{
var ip = false;
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || false;
if (window.RTCPeerConnection)
{
ip = [];
var pc = new RTCPeerConnection({iceServers:[]}), noop = function(){};
pc.createDataChannel('');
pc.createOffer(pc.setLocalDescription.bind(pc), noop);
pc.onicecandidate = function(event)
{
if (event && event.candidate && event.candidate.candidate)
{
var s = event.candidate.candidate.split('\n');
ip.push(s[0].split(' ')[4]);
}
}
}
return ip;
}
ip_local();
这来自另一个 StackOverflow 帖子,代码已经运行了一年半,直到今天下午。
我的本地 IP 似乎被检测为 153b3a68-e3fb-4451-9717-d9b3bc2b5c60.local 而不是通常的 192.168.0.11。
编辑: 如果有人关心,这个问题是不可绕过的,必须通过服务器端语言来完成,在我的情况下,我最终使用 PHP 作为解决问题的临时“创可贴”。
这对我的应用来说是个问题,因为它会检测主机上是否正在运行本地服务器。如果无法检测到 LAN IP 地址,它就无法做到这一点。
【问题讨论】:
-
你为什么不在另一个 SO 问题中发表评论,问为什么它不再工作了?
-
因为这似乎仅限于我的经验。这不是一个“全面”的交易。我想知道是否有人对此有任何经验。
-
我刚试了一下,效果很好。
-
这是我的观点,我想知道是否有其他人有我的经验,作为我的每个问题。
-
如果你有mac,使用这个方法:stackoverflow.com/questions/56543917/…
标签: javascript ip lan