Clozure Common Lisp - TCP套接字编程 - 发送回复

Blu*_*ger 6 sockets common-lisp ccl

我有一个非常小的程序,它打开一个套接字并接受一个连接.然后它抓取远程IP和端口.

我想向远程计算机(telnet)发送短信并关闭连接.

我无法确定哪个函数用于向telnet客户端发送消息.

Clozure手动列出调用的函数"发送到",但它说,这是对UDP套接字和我与TCP套接字的工作.

我希望有人可以告诉我什么是正确的功能,或者,如果"发送到"是正确的功能,如何正确使用它.

谢谢

(setq my-socket (ccl:make-socket :connect :passive :format :text
        :local-port 20000 :reuse-address t))

(setq connection (ccl:accept-connection my-socket))

(setq remote-host (ccl:remote-host connection))

(setq remote-port (ccl:remote-port connection))
Run Code Online (Sandbox Code Playgroud)

Rai*_*wig 8

CCL的文档:ACCEPT-CONNECTION表示它返回一个流.

因此,您可以将Common Lisp的常规I/O操作(例如:PRINC)与该流一起使用.对于I/O操作,请参阅"流"和"打印机"上的HyperSpec章节.

(defun st (port)
  (ccl:with-open-socket (socket :connect :passive
                                :format :text
                                :local-port port
                                :reuse-address t)
    (with-open-stream (stream (ccl:accept-connection socket))
      (princ "CCL example response" stream))))

; example call
(st 20000)
Run Code Online (Sandbox Code Playgroud)