ios - 如何获取当前请求连接服务器的IP地址

标签 ios objective-c

当我使用NSURLSession时,我需要获取当前请求的连接服务器IP地址。 有哪些方法?

我正在尝试使用

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics

但似乎没有目标IP地址。

How can I get the exactly ip address which used to connect in iOS?的补充:

我的需求是监控现有项目中的网络性能,因此无法用CFNetwork替换NSURLsesion。 或者谁能​​告诉我如何 Hook 使用较低级别的方向?

提前致谢!

最佳答案

我已在

中收集了此数据
 -(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metric

不幸的是,它是一个私有(private) api。

代码是:

SEL selector = NSSelectorFromString(@"_timingData");

NSDictionary *timingData = nil;
if ([task respondsToSelector:selector]) {
    timingData = [task performSelector:selector];
}
NSString *remoteServerIP = @"";
if (timingData && [timingData isKindOfClass:[NSDictionary class]]) {
    NSString *key = @"_kCFNTimingDataRemoteAddressAndPort";
    remoteServerIP = timingData[key];
}

关于ios - 如何获取当前请求连接服务器的IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54758498/

相关文章:

iphone - 如何在 UIView 上使用 CATransform3D 添加特定类型的透视图?

ios - 仅在 Swift 中创建一个 Setter

ios - UICollectionView 每秒重新加载一次

ios - 错误域=AVFoundationErrorDomain 代码=-11814 "Cannot Record"

ios - UIScrollView subview 放置错误

ios - objective-C : appending a NSString to NSException reason

ios - 如何不允许圆形 UIView 识别其圆形边界之外的触摸?

ios - 代码签名存在于项目build设置中,但不存在于目标 Xcode 中

ios - 午睡休息登录

ios - 如何从ios中的静态库获取响应