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

时间:2019-02-19 03:37:19

标签: 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?的补充:

我的需求是监视现有项目中的网络性能,因此无法将NSURLsesion替换为CFNetwork。 还是有人可以告诉我如何挂钩使用下级方向?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

我已经在

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

不幸的是,它是一个私有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];
}