C获取我的公共IP地址

山姆

在C程序中获取公共/全局IP地址的最佳方法是什么?关于堆栈溢出的类似问题均表明将查询的输出爬到www.whatismyip.com或类似的内容,但是由于它们可能会更改其格式,因此似乎并不可靠。

我本以为可以向路由器请求面向公众的IP,在我看来,这是一个更强大的解决方案。尽管我不明确地知道该怎么做。我想念什么吗?

保罗

您可以连接到STUN服务器并获取您的外部IP。

我认为您可以轻松找到适用于您的OS的STUN客户端的源代码。


假设您使用的是* nix,则可以在这里找到c中的STUN客户端(这是我找到的第一个客户端):

https://github.com/node/turn-client

下载源: c-stun-client-demo.c

编译$ clang c-stun-client-demo.c -o stun(或使用gcc)

当您运行它时,$ ./stun它会告诉您

usage: ./stun <server_ip> <server_port> <local_port>

可以通过多种方式找到STUN服务器的列表。谷歌搜索我发现了这一点:

https://gist.github.com/zziuni/3741933

让我们来看第一个:

stun.l.google.com:19302

您具有服务器名称和服务器端口。但是STUN客户端需要服务器地址; 您可以使用以下方法检索它nslookup

$ nslookup stun.l.google.com

退货 Address: 64.233.184.127

因此,您将使用以下命令调用该程序:

$ ./stun 64.233.184.127 19302 8888

乌普特是

Main start ... 
socket opened to  64.233.184.127:19302  at local port 8888
Send data ...
Read recv ...
STUN binding resp: success !
socket closed !
ip:port = xxx.xxx.xxx.xxx:-13174
Main over.

xxx.xxx.xxx.xxx您的IP在哪里(实际上是我的IP)

好的,它可以工作。


查看源代码(大约120行),查看其工作方式并将其功能实现到程序中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C获取我的公共IP地址

来自分类Dev

我的公共IP地址

来自分类Dev

如何获取设备的公共IP地址

来自分类Dev

如何获取远程系统的公共IP地址

来自分类Dev

在javascript中获取公共IP地址

来自分类Dev

如果我在路由器后面,如何从命令行获取我的公共IP地址?

来自分类Dev

使我当前的公共IP地址不变。

来自分类Dev

如何使用asp.net c#获取localhost的公共IP地址?

来自分类Dev

虚拟公共IP地址

来自分类Dev

我的WAN IP为何被分配为私有IP地址而不是公共IP地址?

来自分类Dev

在应用程序中获取WinRT设备的公共IP地址

来自分类Dev

如何使用php获取客户端公共IP地址?

来自分类Dev

获取当前EC2实例上的公共IP地址

来自分类Dev

获取远程桌面客户端的公共IP地址

来自分类Dev

如何使用IPFS-JS获取公共IP地址

来自分类Dev

如何使用php获取客户端公共IP地址?

来自分类Dev

获取路由器的公共IP地址的命令

来自分类Dev

在应用程序中获取WinRT设备的公共IP地址

来自分类Dev

如何使用Ruby SDK从AWS获取公共IP地址

来自分类Dev

如何获取公共 IP v4 地址

来自分类Dev

Azure Powershell(Az 模块)获取公共 IP 地址

来自分类Dev

无法在我的公共IP地址上运行Node.js

来自分类Dev

查找我的网络的公共IP地址范围

来自分类Dev

在NAT后面找到我的VM公共IP地址

来自分类Dev

获取我的Firebase Cloud功能的IP地址

来自分类Dev

无法获取我的设备的IP地址

来自分类Dev

使用getsockname()获取我自己的IP地址

来自分类Dev

我从请求中获取本地 IP 地址

来自分类Dev

为什么我看到多个不同的IP地址报告为我的公共IP?