我正在尝试使用SBCL进行cl-async,但我不知道如何检索 我正在通信的套接字的IP地址。
我在带有telent 1.9.4的gnu-linux上使用SBCL 1.4.16
套接字对象中的ADDRESS
插槽未绑定,我尝试从较低级别的libuv绑定中提取失败
我正在使用文档中的默认示例,并在两行之间添加了以下几行 下面的评论 来自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)
;; echo the data back into the socket
;; echo the data back into the socket
(describe 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插槽竟然没有绑定...
有人遇到过这个问题吗?
答案 0 :(得分:1)
我在项目的回购中发现了一个问题,该问题也存在同样的问题,因此由于似乎没有明确的解决方案,因此我将结束该问题。对于我的项目,我将遵循作者的建议,即在服务之前放置一个代理。 issue