我正在尝试找到我的外部IP地址,但我只在NAT后面获得本地IP地址.
NSArray *addresses = [[NSHost currentHost] addresses];
Run Code Online (Sandbox Code Playgroud)
有没有办法打印出公共地址?使用NSHost是个好主意吗?
Jim*_*vey 11
可能并不总是有一种可靠的方式来获取您的公共IP,但OS X中的DNSService API将使用UPnP和/或NAT端口映射协议来获取公共IP(以及其他内容).说明如何使用C API的代码有点大(50-60行),但是有一些Apple示例代码实现了一个很好的ObjC包装功能,甚至提供了一对函数来直接返回公共IP地址的UInt32和NSString表示.
相关代码本身位于此处,但您可能最好只下载zip文件并在项目中包含PortMapper.h和PortMapper.m并直接使用它们.那么你需要做的就是:
NSString * publicAddressString = [PortMapper findPublicAddress];
Run Code Online (Sandbox Code Playgroud)