Clozure Common Lisp - TCP 套接字编程 - 发送回复
我有一个非常小的程序,它打开一个套接字并接受一个连接。然后它会获取远程 IP 和端口。
我想向远程计算机(telnet)发送一条短信并关闭连接。
我无法确定哪个函数用于向 telnet 客户端发送消息。
Clozure 手册列出了一个名为“send to”的函数,但是它说它用于 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))
I have a very small program which opens a socket and accepts a connection. It then grabs the remote IP and port.
I'd like to send a text message to the remote computer (telnet) and close the connection.
I can't determine which function is for sending a message to the telnet client.
The Clozure manual lists a function called "send to" but it says it's for UDP sockets and I'm working with TCP sockets.
I hope someone can tell me what the proper function is, or, if "send-to" is the proper function, how to use it properly.
Thanks
(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))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
CCL:ACCEPT-CONNECTION 的文档说它返回一个流。
因此,您可以将 Common Lisp 的正常 I/O 操作(例如:PRINC)与该流一起使用。对于 I/O 操作,请参阅 HyperSpec 有关“流”和“打印机”的章节。
The documentation of CCL:ACCEPT-CONNECTION says that it returns a stream.
So you can use the normal I/O operations (example: PRINC) of Common Lisp with that stream. For I/O operations see the HyperSpec chapters on 'streams' and the 'printer'.
在 SBCL(使用 usocket)中,我使用 SOCKET-STREAM 函数返回一个 lisp 流,然后使用 FORMAT、WRITE 等来发送内容。
In SBCL (using usocket), I use the SOCKET-STREAM function to return a lisp stream, then use FORMAT, WRITE and the like to send things across.