我试图找到我的外部 IP 地址,但我只能找到位于 NAT 后面的本地 IP 地址。
NSArray *addresses = [[NSHost currentHost] addresses];
有没有办法打印出公共地址?使用 NSHost 是个好主意吗?
可能并不总是有可靠的方法来获取您的公共 IP,但 OS X 中的 DNSService API 将使用 UPnP 和/或 NAT 端口映射协议来获取公共 IP(除其他外)。说明如何使用 C API 的代码在此处显示会有点大(50-60 行),但有一些 Apple 示例代码围绕功能实现了一个很好的 ObjC 包装器,甚至提供了一对直接返回的函数公共 IP 地址的 UInt32 和 NSString 表示形式。
相关代码本身位于这里 http://developer.apple.com/samplecode/PortMapper/listing3.html,但您可能最好只下载 zip 文件并将 PortMapper.h 和 PortMapper.m 包含在您的项目中并直接使用它们。那么你需要做的就是:
NSString * publicAddressString = [PortMapper findPublicAddress];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)