在本地网络前端中查找后端的本地IP地址。JavaScript中的动态

在本地网络前端中查找后端的本地IP地址。JavaScript中的动态,javascript,dns,ip,frontend,backend,Javascript,Dns,Ip,Frontend,Backend,我有一个docker后端和前端在raspberry pi上的本地网络中运行。如果我现在通过raspberry pis ip地址和正确的端口从网络中的另一个设备访问前端,则前端可以工作,但我的前端没有正确的后端ip地址。如果pi连接到另一个网络,则IP可能会改变,因此静态IP无法工作。如果将localhost用作IP,那么如果前端在pi上打开,它就会工作,但是如果它在另一个设备上打开,localhost就会出错 所以我现在的问题是,如何用java脚本代码在前端找到后端的IP地址。我需要通过浏览器端

我有一个docker后端和前端在raspberry pi上的本地网络中运行。如果我现在通过raspberry pis ip地址和正确的端口从网络中的另一个设备访问前端,则前端可以工作,但我的前端没有正确的后端ip地址。如果pi连接到另一个网络,则IP可能会改变,因此静态IP无法工作。如果将localhost用作IP,那么如果前端在pi上打开,它就会工作,但是如果它在另一个设备上打开,localhost就会出错

所以我现在的问题是,如何用java脚本代码在前端找到后端的IP地址。我需要通过浏览器端的java脚本获取后端IP

我已经尝试为节点使用dns包,但这只是针对我不想拥有或发现的外部IP地址。我只想找到本地地址,因为我的系统应该只能在本地访问

编辑:

想法:我可以在JS代码(window.location.href)中获取前端的URL,但是如果设置了主机名,则htat可能不是IP地址,并且它可能不包含IP/主机名之外的端口。所以我也不能在任何情况下都获得ip地址

编辑2: 目前,我只需通过window.location.href获取URL,并在“”之前删除ip/主机名,就可以解决这个问题。但是,如果您坚持使用一个需要指定并放入URL的端口,那么这种方法就行了。但在我找到更好的解决方案之前,它是一个解决办法。

您可以使用

for循环中的if-else条件

用于检查哪个ip地址为您提供了所需的响应

你可能喜欢的代码

对于(n=1至24) { 连接到192.168.0.n

如果(给你重播) { 出口 } 其他的 { 继续循环 } }


如果ip和您的端口给了您响应,那么您连接到该网络

,如果pi连接到另一个网络
,则ip可能会改变
我只想找到本地地址,因为我的系统应该只能在本地访问。
…如果Pi与“前端”不在同一个LAN上,则您无法在本地访问它。是的,这是正确的,但后端和前端始终在Pi上运行。因此,它们总是在同一个网络中(后端和前端),但如果它们都在后端(后端和前端),则后端没有相同的ip地址移动到另一个网络。如果设备位于不同的ip上,则无法工作,或者您必须为后端设备使用静态ip地址。后端和前端都在pi上运行是什么意思。这个问题越来越没有意义了。很抱歉XD我真的试图解释清楚:后端-->Docker NodeJS/Express在PI前端运行-->Docker ReactJS在PI Access上运行:从另一个设备(例如笔记本电脑):后端访问::现在我需要在前端JS代码中找出我笔记本电脑上的PI ip它可能工作。或者你可能最终会连接到你的智能冰箱。这是个好主意,但我如何确保本地地址的格式始终是:192.168.0.n。它可能是192.168.x.n,甚至类似于:10.x.x.x?这是我想解释的逻辑路由器的最后一个八位组通常不是01吗?只需扫描第三个八位组即可找到路由器,然后再扫描网络的其余部分。。这应该在99%的情况下有效。