Когда я пытаюсь использовать ip-адрес вместо имени хоста, чтобы сообщить приложение iOS в симуляторе поговорить с локальным сервером, приложение зависает на экране загрузки, ожидая ответ от сервера, который никогда не приходит.AFNetworking: использование IP-адреса приложение не может достичь сервера
Я новичок в Objective C, но код использует фреймворк AFNetowrking, который обрабатывает запрос, а свойство SCNetworkReachabilityFlags устанавливается по-разному для IP-адреса объекта AFHTTPClient.
Следующие свойства объекта AFHTTPClient для ip-адреса и имени хоста были захвачены во время отладки.
<SCNetworkReachability 0xd26d8a0 [0x53b9ec8]>
{address = 127.0.0.1, flags = 0x00010002, if_index = 1}
<SCNetworkReachability 0xcf283f0 [0x53b9ec8]>
{name = localhost (server query active), flags = 0x80000000, if_index = 0}
В методе startMonitoringNetworkReachability в классе AFHTTPClient.m есть следующее, если утверждение, что срабатывает адрес внутрибрюшинно, но я не знаю, если это проблема:
/* Network reachability monitoring does not establish a baseline for IP addresses as
it does for hostnames, so if the base URL host is an IP address, the initial
reachability callback is manually triggered.
*/
if (AFURLHostIsIPAddress(self.baseURL)) {
SCNetworkReachabilityFlags flags;
SCNetworkReachabilityGetFlags(self.networkReachability, &flags);
dispatch_async(dispatch_get_main_queue(), ^{
AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags);
callback(status);
});
}
Мои вопрос заключается в том, что вызывает проблему, и как я могу использовать IP-адрес как baseURL для подключения к серверу?
Итак, ваш сервер не отвечает? Что за вопрос? –
Привет, Скотт, верно, сервер торнадо не отвечает, когда используется ip-адрес. Я думаю, что AFHTTPClient никогда не обнаруживает, что сервер доступен, хотя при использовании имени хоста он есть. Я добавил вопрос к исходному сообщению. Благодарю. – wanyo
Есть ли способ использовать ip-адрес в правой строке? – TonyTony