gpt4 book ai didi

javascript - 我可以在不使用外部服务的情况下在 chrome 应用程序中获取我的 IP 地址吗?

转载 作者:行者123 更新时间:2023-11-29 19:30:54 25 4
gpt4 key购买 nike

我正在构建一个 chrome app并通过 chrome socket api 创建了一个 UDP 套接字 .

有没有办法在不使用外部服务的情况下检索您自己的IP 地址?我所说的“自己的 IP 地址”是什么意思:客户端服务器 都在同一个网络上。 chrome 应用 需要使用它自己的本地 IP 地址来响应 UDP 广播

实际上有一个chrome socket API正是针对那个用例。但不幸的是,我只收到以下回调对象:Object {paused: false, persistent: false, socketId: 17},它缺少 localAddress 属性。根据 documentation,它是 SocketInfo 对象中的一个(可选) 属性。 .这实际上是我正在运行的代码:

chrome.sockets.udp.create({}, function(socketInfo){
chrome.sockets.udp.getInfo(socketInfo.socketId, function (detailedInfo){
ipAddress = detailedInfo.localAddress;
console.debug(detailedInfo); // containts no `localAddress`
});
});

我也不认为我遗漏了任何 manifest-permissions因为 API documentation 中没有描述特殊权限.这是我使用的:

"sockets": {
"udp": {
"send": "*",
"bind": "*"
}
}

当我使用 Python 时,我可以实现如下目标:

import socket
ip_address = socket.gethostbyname(socket.gethostname())

任何帮助都会很棒!

最佳答案

原来我用错了API。对于我的用例,我需要使用 chrome.system.network.getNetworkInterfaces .

这将返回所有接口(interface)及其IP 地址 的数组。

这是我的示例代码:

chrome.system.network.getNetworkInterfaces(function(interfaces){
console.log(interfaces);
});

list 权限:

"permissions": [
"system.network"
],

考虑到评论,提供一个完美的解决方案并不容易,因为必须找到正确的 UDP 端口接口(interface)。

在这一点上,完美匹配接口(interface)的唯一方法是为 getNetworkInterfaces 给定的所有接口(interface)bind 所有地址。然后您就可以确切地知道哪个接口(interface)用于接收调用,并且您可以使用正确的 IP 地址进行响应。

关于javascript - 我可以在不使用外部服务的情况下在 chrome 应用程序中获取我的 IP 地址吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27533631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com