我正在编写一个使用nsIServerSocket
来监听套接字连接的Firefox扩展。我正在寻找扩展代码的方法,以编程方式学习运行Firefox扩展的机器的本地网络地址。此信息在带外传送到本地网络上的客户端,以便它可以打开与分机的套接字连接。
到目前为止,我对此的研究只发现了希望通过of loaded websites或使用DNS resolution找到IP地址Java applets而不适合FF的个人延期。 Geolocation API上的Mozilla开发者页面提到:
“数据交换包括WiFi接入点数据,访问令牌(类似于2周cookie)和用户的IP地址”
但不表示直接访问用户IP地址的API。
此时我唯一的想法是使用nsIProcess
调用本地进程并从那里解析IP。这似乎是非常hackish,并且必须在每个操作系统的基础上处理。即运行ifconfig,netcfg,ipconfig?用什么args?
有人知道更好的解决方案吗?
答案 0 :(得分:1)
您也可以在此处使用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安装的虚拟适配器公司等。
答案 1 :(得分:0)
我敢打赌Geolocation API中提到的IP地址不是本地计算机的IP地址。我的意思是,世界上哪个地方是192.168.0.100,嗯?一般来说,这只是一个有用的信息。
由于您正在处理本地网络,您是否可以设置一个只打印出客户端地址的小网页?然后,您可以通过请求该网页来了解您的IP。