[Openmcl-devel] [OpenMCL/CCL Devel] Send and receive data via CCL sockets
Karsten Poeck
karsten.poeck at gmail.com
Mon Sep 8 12:42:37 PDT 2008
Hello,
I use the following:
(defun %make-client-socket (host &key port)
(ccl:make-socket :remote-host host
:remote-port port
:type :stream
:connect :active
:format :bivalent))
(defun %make-server-socket (&key port)
(ccl:make-socket :local-port port
:type :stream
:connect :passive
;;; at least for debugging
:nodelay t
:backlog 5
:reuse-address t
:format :bivalent))
(defun %wait-for-connection (socket)
(let ((stream (ccl:accept-connection socket :wait t)))
stream))
Listener 1
(setq der ( %make-server-socket :port 8000))
-> #<CCL::LISTENER-SOCKET #x3000417DFBCD>
( %wait-for-connection der)
-> Blocks
Listener 2
-> (setq die (%make-client-socket "127.0.0.1" :port 8000))
#<BASIC-TCP-STREAM ISO-8859-1 (SOCKET/17) #x30004181F69D>
and listener 1 unblocks
#<BASIC-TCP-STREAM ISO-8859-1 (SOCKET/18) #x30004183FD6D>
and now on both sides you have streams
salud2
Karsten
In article
<6921cfbe0809081148h2d850c76g6bb6bec4cb7ca144 at mail.gmail.com>,
"David Rager" <ragerdl at cs.utexas.edu> wrote:
> Hello,
>
> Please excuse my extremely naive question. I've been reading many
> documents over the last week and have yet to find a definitive way to
> send and receive data via sockets in CCL. How does one send/receive
> data over TCP in CCL? I got the OpenMCL REPL from 2004ish working (a
> rather nice piece of work btw). But, now I'd like to do more advanced
> things like send data back instead of a string.
>
> As a starting point, here's some of what I've been doing:
>
> In LISP session 0:
> (setf *socket?* (make-socket :local-host "127.0.0.1" :local-port 24365
> :remote-host "127.0.0.1" remote-port 23459 :connect :passive :type
> :stream :reuse-address t))
>
> In LISP session 1:
> (setf *socket?* (make-socket :local-host "127.0.0.1" :local-port 23459
> :remote-host "127.0.0.1" remote-port 24365 :connect :active :type
> :stream :reuse-address t))
> (format *socket* "hello")
>
> In LISP session 0:
> (read-line *socket* nil nil)
> ; now I hit an error about how *socket* isn't of type stream. How do
> I make *socket* of type stream?
>
> I'm almost positive reuse-address is optional (I think t is the default?).
>
> Thanks!
> David
>
>
> If it matters, I'm on the official CCL64 1.2 release (++official release).
More information about the Openmcl-devel
mailing list