gpt4 book ai didi

objective-c - 使用 NSHost 访问 IP 地址

转载 作者:太空狗 更新时间:2023-10-30 03:46:35 26 4
gpt4 key购买 nike

我正在尝试使用 NSHost 获取 IP 地址。通过 NSHost 对象,我可以使用 addresses 方法访问对象数组,其中一个是 IP 地址。我担心 IP 地址可能会从一台机器到另一台机器改变数组中的位置。有没有办法以一种通用的方式访问这些信息?

在之前的帖子中曾尝试回答这个问题,但如您所见,它没有达到要求。

IP Address? - Cocoa

这是我的代码:

+(NSString *) ipAddress {
NSHost * h = [[[NSHost currentHost] addresses] objectAtIndex:1];
return h ;
}

最佳答案

我唯一能想到的就是使用类似“http://www.dyndns.org/cgi-bin/check_ip.cgi”的东西,其他人可能有更好的方法。

这是一个示例,(即快速拼凑的代码)

NSUInteger  an_Integer;
NSArray * ipItemsArray;
NSString *externalIP;

NSURL *iPURL = [NSURL URLWithString:@"http://www.dyndns.org/cgi-bin/check_ip.cgi"];

if (iPURL) {
NSError *error = nil;
NSString *theIpHtml = [NSString stringWithContentsOfURL:iPURL
encoding:NSUTF8StringEncoding
error:&error];
if (!error) {
NSScanner *theScanner;
NSString *text = nil;

theScanner = [NSScanner scannerWithString:theIpHtml];

while ([theScanner isAtEnd] == NO) {

// find start of tag
[theScanner scanUpToString:@"<" intoString:NULL] ;

// find end of tag
[theScanner scanUpToString:@">" intoString:&text] ;

// replace the found tag with a space
//(you can filter multi-spaces out later if you wish)
theIpHtml = [theIpHtml stringByReplacingOccurrencesOfString:
[ NSString stringWithFormat:@"%@>", text]
withString:@" "] ;
ipItemsArray =[theIpHtml componentsSeparatedByString:@" "];
an_Integer=[ipItemsArray indexOfObject:@"Address:"];

externalIP =[ipItemsArray objectAtIndex: ++an_Integer];



}


NSLog(@"%@",externalIP);
} else {
NSLog(@"Oops... g %d, %@",
[error code],
[error localizedDescription]);
}
}




[pool drain];
return 0;}

关于objective-c - 使用 NSHost 访问 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3266428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com