Swift中利用域名获得IP地址 C方式

3 篇文章 0 订阅
2 篇文章 0 订阅

本方法利用C语言的方式解决域名转IP

C语言部分如下

//
//  DNSManager.c
//
//  Created by icesnow on 15/9/10.
//  Copyright (c) 2015年 icesnow. All rights reserved.
//

#include <stdio.h>
#include <netdb.h>
#include <string.h>

char *getDNSToIP(char*HOST)
{
    struct hostent *host_entry;
    char host_name[256] ="www.baidu.com";
    /* 即要解析的域名或主机名 */
    host_entry=gethostbyname(host_name);
    if(host_entry!=0)
    {
        sprintf(HOST,"%d.%d.%d.%d",
                (host_entry->h_addr_list[0][0]&0x00ff),
                (host_entry->h_addr_list[0][1]&0x00ff),
                (host_entry->h_addr_list[0][2]&0x00ff),
                (host_entry->h_addr_list[0][3]&0x00ff));
        return HOST;
    } else
    {
        strcpy(host_name,"www.youtube.com");
        host_entry=gethostbyname(host_name);
        if(host_entry!=0)
        {
            sprintf(HOST,"%d.%d.%d.%d",
                    (host_entry->h_addr_list[0][0]&0x00ff),
                    (host_entry->h_addr_list[0][1]&0x00ff),
                    (host_entry->h_addr_list[0][2]&0x00ff),
                    (host_entry->h_addr_list[0][3]&0x00ff));
            return HOST;
        }
    }
    return HOST;
}

桥接文件Bridging-Header.h

char *getDNSToIP(char*HOST);

Swift语言部分

private func dnsToIP() -> String? {
        var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
        let result = getDNSToIP(&hostname)
        let ipAddress = String.fromCString(result)
        if ipAddress != nil && !ipAddress!.isEmpty {
            return ipAddress!
        } else {
            NSLog("域名出错")
            return nil
        }
    }

经测试目前没什么问题,同时感谢阿勇 c语言代码支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值