gpt4 book ai didi

common-lisp - 如何设置 iolib 超时

转载 作者:行者123 更新时间:2023-12-01 12:08:28 25 4
gpt4 key购买 nike

我将 IOLIB 与此代码一起使用来解析主机名:

(sockets:address-to-string (sockets:lookup-hostname name))

我工作了,但是这些函数没有任何超时参数,我不知道如何使用套接字选项设置这些。

最佳答案

不幸的是,这不容易找到(特别是,这没有记录),但遵循 lookup-hostname 的调用链(Emacs 中的 M-. ), 你可以看到你的代码最终调用了dns-query:

(defun dns-query (name &key (type :a) (search *dns-search-domain*)
(nameservers *dns-nameservers*) decode
(repeat *dns-repeat*) (timeout *dns-timeout*))
...)

超时参数默认为一个特殊变量iolib/sockets::*dns-timeout*,它全局绑定(bind)到 10。然后你只需要将它绑定(bind)在你的代码周围来设置一个不同的超时:

(let ((iolib/sockets::*dns-timeout* 1))
...)

变量没有导出,但是 dns-query 导出了,也许直接调用那个函数会更好。

CL-USER> (iolib:dns-query "http://example.com" :timeout 0.0001)
NIL
CL-USER> (iolib:dns-query "http://example.com" :timeout 1)

#<DNS RESPONSE Id: 61273, Question: #(#<"http://example.com." A IN>) Flags: :OP/S :RD :RA :NAME-ERROR, Sections: QD(1) AN(0) NS(1) AD(0)>

关于common-lisp - 如何设置 iolib 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54304228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com