iphone - 可达性 - 对于本地 LAN IP 地址

标签 iphone ios networking wifi reachability

我正在尝试检查设备在 WIFI 上的可达性

我修改了 Maher Ali 的书“Advanced IOS4 Programming”中的代码以使用如下 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>

有人能发现我做错了什么吗?

最佳答案

我使用 Tony Million 的 newer Reachability这使得像这样的事情变得非常容易。要做到这一点,你可以做类似的事情:

if([[Reachability reachabilityForLocalWiFi] isReachable]) {
    // It's reachable on wifi
}

关于iphone - 可达性 - 对于本地 LAN IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5428434/

相关文章:

IOS 11.3 通用应用程序部署错误 : "Invalid Bundle. Your app supports Multitasking on iPad, so you must include the UILaunchStoryboardName"

iphone - 一分钟后 webview 中的内存泄漏仅通过仪器

ios - 表格滚动时自动取消选中行

iphone - UITextField 在编辑时更改字体

git - 在不使用第三方软件或应用程序的情况下在本地网络上创建 Git 服务器

java - 如何在同一台机器上用Java测试广播udp包?

iphone - 检测移动邮件客户端的标准方法?

iphone - 制作类似于会说话的汤姆猫的应用程序

iphone - 如何在我的应用程序中纠正与 iAd 相关的崩溃

networking - 通过 MAC 地址检查主机可用性