gpt4 book ai didi

iphone - 应首先验证什么 - hostReachability 还是 netReachability?

转载 作者:行者123 更新时间:2023-11-29 04:24:36 27 4
gpt4 key购买 nike

这里我有一个非常有趣的话题可供讨论,或者你可以说我需要更好的方法的建议。

这是我的代码

+ (BOOL) isConnected
{
BOOL flag = TRUE;
if (![self isHostReachable])
{
flag = FALSE;
NSString* alertTitle= @"";
NSString* alertMessage= @"";

if (![self isInternetReachable])
{
alertTitle = @"Network unavailable";
alertMessage = @"We can't connect to the Internet. Check your settings/connection.";
}
else
{
alertTitle = @"Server not responding";
alertMessage = @"Server not responding at the moment. Please try again later. Sorry for inconvenience";
}
UIAlertView *alert=[[UIAlertView alloc] initWithTitle:alertTitle
message:alertMessage
delegate:self
cancelButtonTitle:@"Close"
otherButtonTitles:nil];

[alert show];
}
return flag;
}

+ (BOOL) isInternetReachable
{
Reachability *netReachability = [Reachability reachabilityForInternetConnection];
NetworkStatus netSat = [netReachability currentReachabilityStatus];
return (!(netSat == NotReachable));
}

+ (BOOL) isHostReachable
{
Reachability *hostReachability = [Reachability reachabilityWithHostname: [Connection returnHostName]];
NetworkStatus netSat = [hostReachability currentReachabilityStatus];
return (!(netSat == NotReachable));
}

在我的代码中,我过去常常调用“isConnected”方法来检查连接状态,然后再向服务器请求数据。

在该方法中,我首先检查主机可达性。我这样做的想法是为了节省计算时间。

  • 如果 hostReachability 返回 true,则意味着 netConnectivity 也存在(无需验证)。这样我们就完成了一次计算。
  • 如果 hostReachability 返回 false,那么我将检查是否是网络连接造成的。因此需要进行两次计算。

但通常看到代码首先验证netConnectivity,如果可以,然后验证hostReachability。

所以大多数时候都是两次计算,这与我完成任务的方式形成鲜明对比。

请建议您认为哪种方法更好?

最佳答案

netConnectivity 将验证网络是否正常,并且没有由于 100 个原因中的任何一个而关闭,然后验证主机是否可以访问,因为服务器可能由于某些问题而关闭。

如果网络被验证为连接失败,它将首先排除验证主机的可能性。反之亦然,但事实并非如此..我希望这对您有用。干杯!!

关于iphone - 应首先验证什么 - hostReachability 还是 netReachability?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12508472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com