Доступность с адресом ReachabilityWithAddress не работает

Возможный дубликат:
проблема с доступностью SDK для iPhone с адресом

Я пытаюсь определить, может ли iphone подключиться к определенному IP-адресу (простой пинг), используя следующий код:

struct sockaddr_in server_address;   
server_address.sin_len = sizeof(server_address);
server_address.sin_family = AF_INET;
server_address.sin_port = htons(8888);
server_address.sin_addr.s_addr = inet_addr("192.168.105.44"); // ip address of a server on LAN
Reachability *r = [[Reachability reachabilityWithAddress:&server_address ] retain];
NetworkStatus internetStatus = [r currentReachabilityStatus];

Но он всегда говорит, что статус «Доступен», независимо от того, что я даю в IP-адресе. Я делаю что-то не так? Почему это не сработает? Заранее спасибо.


person Ashutosh Dubey    schedule 08.08.2012    source источник
comment
Я не могу создать новое соединение, так как я уже должен быть подключен к тому же IP-адресу с помощью AsyncSocket. Я просто хочу проверить какое-то событие, подключен я или нет. Метод делегата onSocketDidDisconnect не вызывается, когда мы отключаем кабель локальной сети от сервера.   -  person Ashutosh Dubey    schedule 08.08.2012


Ответы (1)


То же поведение

 + (Reachability*) reachabilityWithHostName: (NSString*) hostName;

Достижимость всегда будет возвращать TRUE, не имеет значения, будет ли ваш код возврата HTTP 200 или 404. Если вы не можете использовать решение, которое предлагает ссылка, опубликованная Принцем, вы можете

  1. Проверьте доступность вашего интернета
  2. Запустите HTTPRequest на основе таймера и проверьте код возврата

или проверьте NetReachability. .

Не знаю, поможет ли это вам, поскольку он использует ту же структуру, и у меня не было времени протестировать ее самостоятельно.

person lindinax    schedule 08.08.2012