在一个 CCL REPL 中,我输入:
(WITH-OPEN-SOCKET (socket :LOCAL-PORT 6667
:LOCAL-HOST "localhost"
:CONNECT :PASSIVE
:REUSE-ADDRESS t)
(let ((stream (ACCEPT-CONNECTION socket :wait t)))
(format stream "hello from server.~%")))
它等待连接。
在另一个 CCL 过程中,我输入:
(WITH-OPEN-SOCKET (socket-stream :REMOTE-PORT 6667
:REMOTE-HOST "localhost"
:CONNECT :ACTIVE
:REUSE-ADDRESS t)
(format t (READ-LINE socket-stream)))
在这一点上,这个过程进入等待。它既不从服务器读取,也不退出。
但是,当客户端连接到服务器时,服务器会以 NIL 退出。很明显,至少建立了一个连接,但是字符串“Hello from server”。永远不会被沟通。
我确信这是我忽略的基本内容。我如何发送消息?READ-LINE 不是从流中读取的正确方法吗?我是否从服务器错误地写入?我将如何建立一个基于简单字符串的双向通信?