繁体   English   中英

可达性 - 用于本地LAN IP地址

[英]Reachability - for local LAN IP address

我试图在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的新版Reachability ,让这样的东西变得非常容易。 为此,您可以执行以下操作:

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

不确定是否有这个帮助,但每次我想从苹果使用Reachability.h我想检查应用是否连接到互联网(或任何内部IP)

这是我的代码

#import "Reachability.h"



if([[Reachability sharedReachability] internetConnectionStatus] == NotReachable) {
        UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"You require an internet connection via WiFi or cellular network for location finding to work." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [myAlert show];
        [myAlert release];
}else{
        // Do something 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM