objective-c - 如何使用 NSHost 获取外部 IP 地址?

标签 objective-c cocoa

我正在尝试查找我的外部 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/

相关文章:

ios - 单击横幅广告时的 AdMob 事件

c# - iOS-Unicode取消签名

Objective-C:均匀显示 NSString

objective-c - 圆形 CALayer 周围的边框较深

iphone - NSPipe 和 System() - iPhone SDK Cocoa

cocoa - 在 Mac OS X 应用程序中使用网络代理

ios - 在 SWIFT 中转换 ObjectiveC 表达式

objective-c - 点击 Storyboard 按钮时播放自定义声音

macos - 使用 cocoa 检测挂起的系统关闭

swift - Metal API View 没有渲染 channel 描述符