我的设置如下所示:Nodemcu和树莓派连接到WiFi路由器。我在Nodemcu中的lua代码需要通过WLAN调用托管在树莓派中的REST API。nodemcu私有IP(WLAN)连接失败
但我看得出来,连接失败:
http.get("http://192.168.43.100:8080/api/logdevice", nil, function (code, resp) print(code, resp) end)
> --http.get("http://example.com", nil, function (code, resp) print(code, resp) end)HTTP client: Disconnected with error: -11
HTTP client: Connection timeout
HTTP client: Connection timeout
当我给一个互联网地址(http://example.com),请求成功。
我能够从同一WiFi网络中的另一台笔记本电脑访问REST API。
我已验证的无线网络设置是通过使用Lua代码正确:
ip, netmask, gateway = wifi.sta.getip()
是否有任何限制在nodemcu在访问私有IP地址?
UPDATE 1:我将nodemcu设置为接入点并将API服务器连接到它。现在nodemcu能够访问API。但这不是我需要的WiFi设置。我需要nodemcu成为WiFi站。所以我认为这可能是路由表中的问题。在将nodemcu连接到外部AP后,是否应该执行额外的路由配置?
如果您使用底层的'net'模块而不是'http'模块,它可以工作:https://nodemcu.readthedocs.io/en/latest/en/modules/net/#netsocketon –
@MarcelStör那也失败了 – Kiran
因此,您可以从NodeMCU访问互联网,但不能访问您的专用网络中的资源?我不知道这方面的已知问题或限制。事实上,无论是HTTP还是网络操作,私有资源都不会成功。恕我直言,建议在您的一端使用“阻塞”网络组件。 –