当iPhone连接到无线路由器,而该路由器未连接到互联网时?我需要显示一条错误消息,说“检查您的互联网连接”我尝试了可达性示例代码。但是不走运,http://developer.apple.com/library/ios/#samplecode/Reachability/Listings/ReadMe_txt.html
当我在手机中禁用WIFI时,它工作得很好,我尝试了Checking For Internet Connectivity in Objective C示例代码"isDataSourceAvailable“,即使它不工作,任何人可以帮助我解决这个问题,真的很有用。
发布于 2010-10-12 15:57:59
你可以这样做:
+ (BOOL) pingServer
{
NSURL *url = [NSURL URLWithString:@"http://some-url-that-has-to-work/"];
NSURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSHTTPURLResponse *response = nil;
[NSURLConnection sendSynchronousRequest:request
returningResponse:&response error:NULL];
return (response != nil);
}这是一个同步请求,因此它将阻塞当前线程。您可以在后台线程中执行整个网络检查,这样阻塞它就不成问题了,或者您也可以异步发送请求。此外,您可能希望将HTTP方法设置为HEAD,这样就不会下载整个资源。
发布于 2010-10-12 16:53:34
我建议你和微软做同样的事情,如果真的很糟糕,你甚至可以使用他们的服务器,因为他们可能会确保这些服务器在可预见的未来是在线的。
他们查找主机名,然后访问web服务器上的一个非常小的文件。
请参阅same question on serverfault (当然是从非编程的角度)。
基本上就是查找主机名的IP地址(在该示例中为"dns.msftncsi.com"),然后访问该地址,例如http://msftncsi.com/ncsi.txt。如果你愿意,这可以通过简单的套接字编程来完成,真正的HTTP不是必需的。
在您通过查找主机名找到的IP上,打开到端口80的套接字。将字符串发送到套接字,如下所示:
"GET /msftncsi.com/ncsi.txt HTTP/1.1\nHost: msftncsi.com:80\n\n"然后等待某些东西返回。如果返回任何内容,即使是一个字节,也意味着您可以访问Internet。
或者至少访问该服务器,在本例中是Microsoft。
发布于 2011-06-28 12:52:00
https://github.com/adib/asi-http-request/blob/master/External/Reachability/Reachability.h
这是git上ASI HTTPRequest项目的一部分。它扩展了苹果的例子,显然对商店中相当多的应用程序来说已经足够好了(参见ASI的墙谁在使用:http://allseeing-i.com/ASIHTTPRequest/Who-is-using-it)
无论如何,我知道答案已经被接受了,但只是为了进一步参考。
https://stackoverflow.com/questions/3912586
复制相似问题