在一個CCL REPL我進入:如何通過Clozure Common Lisp中的套接字進行通信?
(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」。從未得到溝通。
我確定這是我忽略的一些基本內容。我如何發送消息? READ-LINE不是從流中讀取數據的正確方法嗎?我是否從服務器寫錯了?我將如何建立一個雙向簡單的基於字符串的通信?
還有':format:text'選項(http://stackoverflow.com/a/1526444/124319),不知道這是否有幫助。 – coredump
@coredump格式的默認值是根據CCL文檔的文本。所以這是不需要的。但是,謝謝。 –