내가 입력 :Clozure Common Lisp에서 소켓을 통해 통신하는 방법은 무엇입니까? 한 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은 스트림에서 읽을 수있는 올바른 방법이 아닙니까? 서버에서 잘못 쓰고 있습니까? 양방향 단순 문자열 기반 통신을 어떻게 설정합니까?
': format : text' 옵션 (http://stackoverflow.com/a/1526444/124319)도 있습니다. 도움이되는지 확실하지 않습니다. – coredump
@coredump 형식의 기본값은 CCL 문서에 따른 텍스트입니다. 그래서 불필요합니다. 하지만 고마워. –