如何在特定端口ios app上ping ip地址

时间:2013-10-10 04:00:14

标签: ios

我试图ping我网络上的所有IP地址。我现在能够获取我的ip我试图ping我网络中的所有其他ip。我有这个ip xxx.xxx.xxx.121,我必须ping xxx.xxx.xxx.1到xxx.xxx.xxx.255.Im顺便使用simpleping。

for (int i = 0; i<256; i++) {
        NSString *str = [NSString stringWithFormat:@"%@.%i",searchingIp,i];
        NSLog(@"ipStr:%@",str);

        const char *address = [str UTF8String];
        NSLog(@"%s",address);

        struct sockaddr_in callAddress;
        callAddress.sin_len = sizeof(callAddress);
        callAddress.sin_family = AF_INET;
        callAddress.sin_port = htons(49160);
        callAddress.sin_addr.s_addr = inet_addr(address);

        NSLog(@"%s:%d",inet_ntoa(((struct sockaddr_in*)&callAddress)->sin_addr),((struct sockaddr_in*)&callAddress)->sin_port);


        simplePing = [SimplePing simplePingWithHostAddress:[NSData dataWithBytes:&callAddress length:sizeof(callAddress)]];
        simplePing.delegate = self;
        [simplePing start];
    }

我还尝试将端口设置为“49160”但仍显示2240。 我在这种类型的东西中有点新鲜。

1 个答案:

答案 0 :(得分:0)

您说您正在使用Apple编写的SimplePing示例(https://developer.apple.com/library/mac/samplecode/SimplePing/Introduction/Intro.html

然后,我认为有一种方法可以让你使用主机名进行初始化:

+ (SimplePing *)simplePingWithHostName:(NSString *)hostName

然后写一些类似的东西应该更容易:

for (int i = 0; i<256; i++) {
        NSString *str = [NSString stringWithFormat:@"%@.%i",searchingIp,i];
        NSLog(@"ipStr:%@",str);

        simplePing = [SimplePing simplePingWithHostName:str];
        simplePing.delegate = self;
        [simplePing start];
    }
BTW,ICMP不是TCP / UDP所以我认为没有端口抽象,而是像echo这样的消息类型。