for_2012 2013-01-07 07:36 采纳率: 0%
浏览 3460
已采纳

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 2013-01-08 04:11
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突