在服务器模式下启动 GSM 调制解调器时如何获取 public IP 地址?

How do I get the public IP address when starting a GSM modem in server mode?

我有一个 SIM800C GSM 模块,我想用它来制作服务器。我真的很困惑知道 public IP 地址。为了让人们连接到任何服务器,他们需要正确的 public IP 地址和正确的端口,当然还有正确的协议(TCP、HTTP 等..)。

已有获取本地IP地址的命令(AT+CIFSR);如果我创建了一个服务器并且想让我的朋友连接到它,我需要 public IP 地址。我如何获得它?

我在互联网上搜索,但一无所获。

AT+CIFSR(以及标准命令 AT+CGPADDR)returns 一旦您激活 PDP 上下文,您的 IP。不幸的是,它是否为 public 取决于您的运营商。事实上,由于需要面对IPv4地址耗尽,他们经常执行网络地址转换(NAT),这实际上会提供一个本地IP到您的设备。

因此,您的设备将无法进行非 device-initiated 的通信,并且您根本无法创建 public 服务器。

因此,这不是 一个 public IP 相对于本地 IP :这只是您从网络获得的 IP。如果不做NAT,那么你用AT+CIFSR得到的IP就是public。


设计work-around

通常 NATted IP 限制面临设计技巧

  1. A wake-up SMS 被发送到托管服务器的设备。 SMS 可以是 基本 短信(仅包含与应用程序相关的数据的文本)或特殊的 SMS 类型(Wap 推送通知)。
  2. 一旦收到短信,设备就会启动服务器并向远程对等方发送一些数据
  3. 这将导致设备发起通信,因此从网络端将打开 NAT,设备将暂时 public。
  4. 经过一定的不活动时间(取决于运营商)后,NAT 将再次关闭

“商业”解决方案

如果设计解决方案不可行,还有另一种选择,涉及购买专门用于 M2M 和物联网应用的特殊(且更昂贵...)SIM:

  1. SIM 将始终获得 public IP
  2. SIM 将始终获得 public 固定 IP