我试图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。 我在这种类型的东西中有点新鲜。
答案 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这样的消息类型。