当我使用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/