2 for 2012 for_2012 于 2013.01.07 15:36 提问

gethostbyname( )在ios6中不工作

我用gethostbyname( )获取设备的ip,在ios5中运行正常,但是在ios6中,返回的host值是空,下面就是我的代码:

// retun the host name
- (NSString *)hostname
{
    char baseHostName[256];
    int success = gethostname(baseHostName, 255);
    if (success != 0) return nil;
    baseHostName[255] = '\0';

#if !TARGET_IPHONE_SIMULATOR
    return [NSString stringWithFormat:@"%s.local", baseHostName];
#else
    return [NSString stringWithFormat:@"%s", baseHostName];
#endif
}

// return IP Address
- (NSString *)localIPAddress
{
    struct hostent *host = gethostbyname([[self hostname] UTF8String]);
    if (!host) {
        herror("resolv");
        return nil;
    }
    struct in_addr **list = (struct in_addr **)host->h_addr_list;
    return [NSString stringWithCString:inet_ntoa(*list[0]) encoding:NSUTF8StringEncoding];
}

在ios5和ios6的模拟器中都正常,但是到ios6针剂就不行了,不知道是怎么回事?有没有其他方法在ios6获取设备ip的?谢谢指教

1个回答

pinxue
pinxue   2013.01.08 12:11
已采纳

改用 getifaddrs + getnameinfo 可以枚举出所有接口的ip。gethostbyname对ipv6是无效的。

redouba
redouba 怎么改
3 年多之前 回复
for_2012
for_2012 太谢谢了~多谢指教
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!