C++ 如何获取我的计算机外部IP地址?

C++ 如何获取我的计算机外部IP地址?,c++,windows,visual-c++,C++,Windows,Visual C++,假设我的IP当前为:123.123.123.123 如何以编程方式获取该字符串 注意:我不想获得此IP:192.168.0.10,我想要其他人可以通过HTTP或任何方式连接到我的计算机的IP 注:我不想打开一些网页,如IP4.ME来获取地址,我想用C++来获得它。 我试着用谷歌搜索,但每个建议都是“加载一个页面,阅读它告诉你的IP”。这真的是唯一的办法吗 你可以从或类似的服务中获取,但我不确定这些网站的可用性有多可靠 任何其他方式都会非常复杂,因为一般来说,没有任何网络设备有api来告诉外部IP

假设我的IP当前为:
123.123.123.123

如何以编程方式获取该字符串

注意:我不想获得此IP:
192.168.0.10
,我想要其他人可以通过HTTP或任何方式连接到我的计算机的IP

注:我不想打开一些网页,如IP4.ME来获取地址,我想用C++来获得它。 我试着用谷歌搜索,但每个建议都是“加载一个页面,阅读它告诉你的IP”。这真的是唯一的办法吗

你可以从或类似的服务中获取,但我不确定这些网站的可用性有多可靠


任何其他方式都会非常复杂,因为一般来说,没有任何网络设备有api来告诉外部IP,即使有,您也无法判断前面是否有一个简单的xDSL路由器或Cisco ASA本地出站流量

我的建议是发送一个带有记录路由选项的数据包

如果您知道您的上游网关,您应该能够找到一个ping命令,该命令允许您设置记录路由,然后将该数据存储在一个数组中,或者可以使用regex

我相信您的WAN IP应该是记录0或记录1


您使用的是什么网络库?

唯一的另一种方法是以某种方式查询将您连接到internet的东西(如DSL路由器/调制解调器)。没有用于此的通用接口。可能是一些库,但没有标准C++。在工作中,我们有2或3个IP地址,由10000人共享。在这种情况下,知道外部地址是没有用的。没有API可以做到这一点,因为您的计算机根本不知道外部IP地址是什么。Windows无法提供它没有的信息。你为什么还需要外部地址?@BoPersson,如果它对你没有用处,并不意味着它对任何人都没有用处。你还知道哪些网站只返回IP而不返回其他内容,因此很容易解析?(如果其中一个网站不起作用,那么有一个后备网站可能是明智的)。当然,在这种情况下,后备应该是强制性的。。。应该很容易解析,是ip地址只是为了看看这个,谷歌有一个服务获取您的ip我没有谷歌API的经验,但值得一试,至少你可以肯定它将始终响应HRM。您可能希望查看比winsock更高层的内容。这里有一个解决办法<代码>输出=系统(“ping-r9xxx.xxx.xxx.xxx”)(使用路由器连接到的用于xxx.xxx.xxx.xxx的网关。您可能还可以使用其他网关,但我知道它在Mac上不起作用)您可以通过运行该命令查看返回的内容。重要的一行内容是
Route:host[you.rwa.nip.hre]
grep将在此时向您提供该信息。