gpt4 book ai didi

c# - 将 Azure IoT Edge EFlow 端口公开给主机 (Windows)

转载 作者:行者123 更新时间:2023-12-03 02:14:13 26 4
gpt4 key购买 nike

  1. 我有一个在 Linux 虚拟机中运行的 API 模块(如 IoT Edge EFLOW),它公开了某个端口,我们采用 8000。该模块负责获取数据并将其发送到其他 IoT Edge 自定义模块在将其发送到物联网中心之前进行处理。
  2. 我创建了 2 个模块,1 个 Web API (net6) 和 1 个 CSharpModule(netcoreapp3.1,使用 VS Code 创建时开箱即用)。
  3. 我部署了这两个模块,它们运行成功,并且我能够使用 REST 调用在 Linux 内核(EFlow 内核)内执行 curl 操作。例如curl -XPOST -H "内容类型:application/json"-d '{ "日期":"2022-04-19T11:17:06Z", "温度":"10", "压力":"120", "电池生命周期":"100"}' 'http://localhost:8000/edgesensor'

现在,问题陈述,我想通过我的 Windows 主机调用相同的端点并到达端口 8000,但这没有发生,并且连接被拒绝。

我对该 API 模块的配置如下。

         "createOptions": {
"ExposedPorts": {
"8000/tcp": {}
},
"HostConfig": {
"PortBindings": {
"8000/tcp": [
{
"HostPort": "8000"
}
]
}
}
}

我尝试查看提供的示例,例如下面的 EFlow github 链接。

https://github.com/Azure/iotedge-eflow

但此示例使物联网边缘充当设备网关以及将其作为子设备调用的控制台应用程序。

  1. 这是连接到 EFlow IoT Edge 设备的唯一方法吗?即使其充当网关,还是可以按照我尝试调用的方式调用它?

  2. 端口转发也是一种这样的方法。但是 Azure IoT Edge 模块提供的配置中是否有某些内容可以执行此操作,我是否缺少某些内容?

欢迎任何意见。

干杯!

最佳答案

如果您想直接从 Windows 主机操作系统连接到该端口,可以使用 EFLOW 虚拟机 IP 地址 + 端口。要获取 EFLOW 虚拟机 IP,您可以使用 Get-EflowVmAddr

如果您想从不同的 Windows 设备进行连接,有两种可能的情况:

  • 带有 Win Server 的内部交换机 - 您可以使用静态 IP 而不是 DHCP,然后使用端口转发到该静态 IP。例如,假设您的 EFLOW VM 地址为 172.20.1.2,并且您想要转发端口 8080,那么在 Windows 主机操作系统上您应该运行以下命令:netsh 接口(interface) portproxy 添加 v4tov4listenport=8080listenaddress=0.0.0.0connectport=8080connectaddress=172.20.1.2

  • 带有 Win 客户端的默认交换机 - 您可以使用 EFLOW VM 主机名 +“mshome.net”而不是静态 IP。例如,假设您的 EFLOW VM 具有“DESKTOP-TEST-EFLOW”主机名,并且您想要转发端口 8080,那么在 Windows 主机操作系统上您应该运行以下命令:netsh 接口(interface) portproxy 添加 v4tov4 Listenport=8080 Listenaddress=0.0.0.0 connectport=8080 connectaddress=DESKTOP-TEST-EFLOW.mshome.net

谢谢,弗朗西斯科

关于c# - 将 Azure IoT Edge EFlow 端口公开给主机 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72008476/

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