我正在尝试查找我的外部 IP 地址,但我只能找到位于 NAT 后面的本地 IP 地址。
NSArray *addresses = [[NSHost currentHost] addresses];
有没有办法打印出公共(public)地址?使用 NSHost 是个好主意吗?
最佳答案
可能并不总是有可靠的方法来获取您的公共(public) IP,但 OS X 中的 DNSService API 将使用 UPnP 和/或 NAT 端口映射协议(protocol)来获取公共(public) IP(除其他外)。说明如何使用 C API 的代码在此处显示会有点大(50-60 行),但有一些 Apple 示例代码围绕功能实现了一个很好的 ObjC 包装器,甚至提供了一对直接返回的函数公共(public) IP 地址的 UInt32 和 NSString 表示形式。
相关代码本身is located here ,但您可能最好只下载 zip 文件并将 PortMapper.h 和 PortMapper.m 包含在您的项目中并直接使用它们。那么您需要做的就是:
NSString * publicAddressString = [PortMapper findPublicAddress];
关于objective-c - 如何使用 NSHost 获取外部 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931889/