- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找到了一些example code我尝试使用它来进行 CNAME 记录查找(请注意,我传递了一个我想要运行的 callback
block ):
DNSServiceQueryRecord(serviceRef, 0, 0, domainName, UInt16(kDNSServiceType_CNAME), UInt16(kDNSServiceClass_IN), callback, &mutableCompletionHandler);
DNSServiceProcessResult(serviceRef.pointee)
问题是此代码在 DNSServiceProcessResult(serviceRef.pointee)
处被阻止,并且永远不会调用 callback
。根据Apple的文档DNSServiceProcessResult ,我需要
Use
DNSServiceRefSockFD
in conjunction with a run loop or select() to determine the presence of a response from the server before calling this function to process the reply without blocking.
因此,我查看了 DNSServiceRefSockFD
,发现我可以使用 DNSServiceRefSockFD(serviceRef.pointee)
创建一个 dnssd_sock_t
。但现在我有了套接字,我不确定如何“将其与运行循环结合使用”作为运行循环的事件源(根据 DNSServiceRefSockFD 文档)。
我只是不明白这是如何工作的。我不明白如何使用 dnsssd_sock_t
作为运行循环的事件源,以便我可以在正确的时间调用 DNSServiceProcessResult
而不会阻塞,以便我的 回调
将实际运行。
如果最好使用套接字作为 kqueue 事件源或在 select() 循环中(如文档所述),我对此表示同意,但我也不知道该怎么做。
CoreFoundation 可能非常神秘,因此非常感谢任何帮助!
如果有更好的方法来进行 CNAME 记录查找,请务必分享!
最佳答案
查看我 (ethan-gerardot) 对 https://gist.github.com/fikeminkel/a9c4bc4d0348527e8df3690e242038d3 的评论
第一段回答了如何在不阻塞的情况下调用回调。
关于swift - 如何在 swift 中进行 CNAME 记录查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49078227/
我是一名优秀的程序员,十分优秀!