如何在操场上调用res_nquery函数?

时间:2016-02-16 09:55:19

标签: swift

我想在操场上将以下OC代码转换为Swift。但我无法打电话

int len = res_nquery(res, host, ns_c_in, ns_t_a, answer, sizeof(answer));

2 个答案:

答案 0 :(得分:0)

在我的代码中,我有这个Swift 3包装器:

public final func query(_ dname: String, qclass: UInt16, qtype: UInt16, answer: UnsafeMutablePointer<UInt8>, anslen: Int) -> Int32 {
    return res_9_nquery(&state, dname, Int32(qclass), Int32(qtype), answer, Int32(anslen))
}

其中state是:

var state = __res_9_state()
res_9_ninit(&state)

您需要将libresolv.9.dylib添加到项目的库中。

答案 1 :(得分:-1)

http://www.jianshu.com/p/d945454e3abc

您需要在objective-c文件头上添加#include。

Get DNS server IP from iphone settings

你需要知道如何在swift中导入Objective-c。

您需要为res_query创建一个objective-c函数。

在objective-c文件中,如**。m,

  • (NSUInteger)newForRes_query:(char *)domainName newclass:(int)class newtype:(int)type newanswer_buffer:(char *)answer_buffer newanswer_buffer_length:(int)answer_buffer_length { int nBytesRead = 0; nBytesRead = res_query(domainName,class,type,answer_buffer,answer_buffer_length); return nBytesRead; }