我正在使用 SBCL 试验 cl-async,我不知道如何检索 我正在通信的套接字的 IP 地址。
我在带有 telent 1.9.4 的 gnu-linux 上使用 SBCL 1.4.16
套接字对象中的 ADDRESS
插槽似乎未绑定(bind),我尝试从较低级别的 libuv 绑定(bind)中提取失败
我正在使用文档中的默认示例,并添加了行 下面的评论 来自 http://orthecreedence.github.io/cl-async/examples
(defun my-echo-server ()
(format t "Starting server.~%")
(as:tcp-server nil 9003 ; nil is "0.0.0.0"
(lambda (socket data)
(describe socket)
;; echo the data back into the socket
(as:write-socket-data socket data))
(lambda (err) (format t "listener event: ~a~%" err)))
;; catch sigint
(as:signal-handler 2 (lambda (sig) (declare (ignore sig)) (as:exit-event-loop))))
(as:start-event-loop #'my-echo-server)
当我使用 netcat 或 telnet 连接并发送内容时,输出是:
#<CL-ASYNC:TCP-SOCKET {1004DC0BF3}>
[standard-object]
Slots with :INSTANCE allocation:
C = #.(SB-SYS:INT-SAP #X7F3EEC021490)
DATA = NIL
CLOSED = NIL
DRAIN-READ-BUFFER = T
ADDRESS = #<unbound slot>
BUFFER = #S(FAST-IO:OUTPUT-BUFFER..
BUFFERINGP = NIL
CONNECTED = T
DIRECTION = :IN
ADDRESS 插槽出人意料地未绑定(bind)...
有人遇到过这个问题吗?
最佳答案
我在项目的 repo 上发现了一个存在同样问题的问题,所以我关闭了这个问题,因为似乎没有干净的解决方案。对于我的项目,我将遵循作者的建议,在服务前面放置一个代理。 issue
关于lisp - 我如何使用 cl-async 在 Lisp 中检索套接字对等方的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56351277/