iOS多线程响应



我有一个需要来自Web服务器的数据的应用。我在不同国家/地区有服务器,以确保对本地请求进行快速响应。在应用程序的开头,我想确定我应该使用哪个服务器,因此我的计划是向不同的服务器发送请求并首先检查哪些响应。

我在每个服务器上都有一个check.php,并返回"确定"作为响应,我可以在不同的线程中调用它,但是我不知道如何将serverURL设置为首先响应的服务器。谁能帮忙?还是有更好的方法可以实现我想要的东西?

NSURL *url = [NSURL URLWithString:@"http://server_de/check.php"];
NSError *e = nil;
NSString* result = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&e];
if (result == nil || ![result isEqualToString:@"ok"]) {
    serverURL=ServerDE;
} 

编辑:所有服务器都会做出响应,但是世界另一端的服务器都会慢。我需要设置最快的服务器,而不是最慢的服务器。

,假设您发送了许多请求,并且每个请求在完成后都会覆盖serverURL值,这就是为什么您最终获得最新的请求。为了避免,您可以将serverURL作为属性或全局变量,然后检查serverURL是否已经在分配之前具有价值,如果它具有,则请勿更新。

if ((result == nil || ![result isEqualToString:@"ok"]) && serverURL != nil) {
    serverURL = aServer;
} 

实际上,一旦获得第一个响应,您就可以取消其他请求,因为您不再需要他们的答案。

最新更新