Я экспериментирую с cl-async с использованием SBCL, я не могу понять, как получить IP-адрес сокета, по которому я общаюсь.
Я использую SBCL 1.4.16 в gnu-linux с telent 1.9.4
Слот 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 неожиданно не связан ...
Кто-нибудь сталкивался с этой проблемой?