Я пытаюсь проверить доступность устройства по WIFI
Я изменил код из книги Махера Али «Расширенное программирование IOS4», чтобы использовать IP-адрес следующим образом
- (BOOL) networkConnected: (NSString *) addr {
SCNetworkReachabilityFlags flags = 0;
SCNetworkReachabilityRef netReachability;
BOOL retrievedFlags = NO;
// added the "if" and first part of if statement
//
if (hasLeadingNumberInString(addr)) {
struct sockaddr_in the_addr;
memset((void *)&the_addr, 0, sizeof(the_addr));
the_addr.sin_family = AF_INET;
the_addr.sin_port = htons(1001);
const char* server_addr = [addr UTF8String];
unsigned long ip_addr = inet_addr(server_addr);
the_addr.sin_addr.s_addr = ip_addr;
netReachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (struct sockaddr*)&the_addr);
} else {
netReachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [addr UTF8String]);
}
if (netReachability) {
retrievedFlags = SCNetworkReachabilityGetFlags(netReachability, &flags);
CFRelease(netReachability);
}
if (!retrievedFlags || !flags) {
return NO;
}
return YES;
}
Но он всегда возвращает NO, используя IP-адрес и порт, к которым я могу подключиться
(т.е. если я пропущу эту проверку, все пойдет хорошо)
Я пытаюсь подключиться к «10.0.0.59» порту 1001, что я могу сделать
он компилируется - и я прошел (на ipod) и он работает через секцию сокета кода.
netReachability возвращается как ноль.
соответствующие заголовки включены
#import "Reachability.h"
#include <CFNetwork/CFSocketStream.h>
#include <arpa/inet.h>
Кто-нибудь может заметить, что я делаю неправильно?