【发布时间】:2011-03-25 04:06:59
【问题描述】:
我正在尝试检查设备在 WIFI 上的可达性
我已经修改了 Maher Ali 的《高级 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;
}
但它总是使用我知道可以连接到的 IP 地址和端口返回 NO (即,如果我跳过此检查,一切顺利)
我正在尝试连接到“10.0.0.59”端口 1001,我可以这样做
它确实编译了——我已经(在 ipod 上)通过了它,它正在通过代码的套接字部分运行。
netReachability 返回为零。
包含的相关标题是
#import "Reachability.h"
#include <CFNetwork/CFSocketStream.h>
#include <arpa/inet.h>
谁能发现我做错了什么?
【问题讨论】:
-
嗨,你找到解决办法了吗??
标签: iphone ios networking wifi reachability