javascript - 如何从 Firefox 扩展代码中获取本地 IP

标签 javascript sockets firefox firefox-addon

我正在编写一个使用 nsIServerSocket 的 Firefox 扩展监听套接字连接。我正在寻找一种方法让扩展代码以编程方式了解运行 Firefox 扩展的机器的本地网络地址。此信息以带外方式传送到本地网络上的客户端,以便它可以打开到扩展的套接字连接。

到目前为止,我对此的研究只找到了希望找到 IP 地址 of loaded websites 的个人。通过 DNS resolution或使用 Java applets ) 不适用于 FF 扩展。 Geolocation API 上的 Mozilla 开发者页面提及:

"data is exchanged including WiFi Access Point data, an access token (similar to a 2 week cookie), and the user's IP address"

但不表示直接访问用户IP地址的API。

此时我唯一的想法是使用 nsIProcess 调用本地进程并从那里解析 IP。这看起来非常骇人听闻,必须在每个操作系统的基础上进行处理。 IE。运行 ifconfig、netcfg、ipconfig?用什么参数?

有人知道更好的解决方案吗?

最佳答案

您使用 nsIDNSService interface这里也是——它有一个可以解析的 myHostName 属性:

var dns = Components.classes["@mozilla.org/network/dns-service;1"]
                    .getService(Components.interfaces.nsIDNSService);
var myName = dns.myHostName;
var record = dns.resolve(myName, 0);
while (record.hasMore())
  alert(record.getNextAddrAsString());

您应该期望它会产生多个地址,但并非所有地址都是有效的 - 即使对于本地网络,您也会至少获得两个地址(IPv6 和 IPv4),除此之外您还可能获得一个 Teredo 地址,地址来自 VMWare & Co. 等安装的虚拟适配器。

关于javascript - 如何从 Firefox 扩展代码中获取本地 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9689632/

相关文章:

javascript - 可以将 "paste image"支持破解到 Firefox 中的文本区域吗?

javascript - 用 Javascript/jQuery 构建计时器

javascript - 更改 css 链接并等待新的 css 加载

c++ - 如何在不同用户下为目标进程复制套接字

Javascript 函数无法跨浏览器工作。

javascript - 我可以在 Firefox 扩展弹出通知中设置背景颜色吗?

javascript - D3.js - 在 AJAX 请求期间添加加载通知

javascript - 无论如何检查 Chrome 用户脚本中的更新?

javascript - 如何显示来自 socket.io 连接的数据?

java - 如何使用 Java MulticastSocket 在不同 EC2 实例之间进行多播?