我在 lisp 中的 TCP 客户端上工作,并且在正确读取/打印套接字流时遇到了困难。当客户端向服务器发送数据时,它应该会收到响应,我需要将其写入标准输出。这可以正常工作,除了我遇到响应打印两次的问题。如果我有多个命令被发送,只有最后一个会被打印两次。这是我的代码:
(defun socket-print (string socket)
(write-line string (usocket:socket-stream socket))
(force-output (usocket:socket-stream socket)))
(defun socket-read (socket)
(write-line (read-line (usocket:socket-stream socket) nil)))
(defun mytest (command)
(let ((socket (usocket:socket-connect _IP_ _PORT_)))
(socket-print command socket)
(socket-read socket)))