我有一个可以连接到互联网的嵌入式系统。该嵌入式系统必须将传感器数据发送到PC机客户端。
我在我的PC上安装了一个使用python的套接字客户端。我放了一个socket服务器(在嵌入式系统上使用C++语言,因为您只能使用C++ )。
我可以使用套接字成功地从我的PC连接到嵌入式系统,并发送和接收我想要的任何东西。
现在,问题是我使用本地IP连接到系统,并且它们必须连接到相同的Wifi路由器。
在实际应用中,我不知道嵌入式系统在世界的什么地方。我需要通过互联网到达它,因为它将通过4g连接到互联网。
我的问题是,如果嵌入式系统使用4G接入互联网,我如何通过互联网连接它?
谢谢
发布于 2020-12-09 03:06:35
我认为,如果您将嵌入式系统和PC的角色互换一下,您的问题会更容易解决。如果您通过蜂窝网络使用IP协议与设备通信,则将设备连接到PC上的服务器要容易得多,反之亦然。一些网络/蜂窝调制解调器不允许服务器套接字,并且在任何情况下,IP地址通常是动态分配的,因此难以获知。通过使设备连接到服务器,它“知道”它应该连接到的域名(或IP地址)和端口。您只需确保确实有一个服务器程序在该主机上运行,并绑定到某个商定的端口号。您可以唤醒设备以基于多个条件形成连接,例如收集数据的时间或数量等。
发布于 2020-12-09 13:43:39
实际上,在典型情况下,挂起4g调制解调器的PC或嵌入式设备都不太可能(或应该被允许)具有外部可路由地址。
这实际上意味着您需要通过云中双方可见的中继来反弹流量。
对于IoT设备(基本上就是互联的嵌入式设备)来说,一种非常常见的方法就是使用MQTT。您会发现对大多数具有任何类型的IP网络功能的计算平台都有这样或那样的支持。
当然,还有许多其他方案-您可以使用MQTT或websockets (可能作为RESTful代理的替代模式),或大型云平台提供的各种专有IoT解决方案。
将流量封装在SSL中也是非常关键的,因此您也需要在嵌入式设备中支持这一点。您还必须考虑打包哪些CA证书,以及如何处理作为SSL验证输入的正式要求。
https://stackoverflow.com/questions/65202965
复制相似问题