New message-based API and new test has been submited into SVN head, see this demo:
(defun udp-echo-test-3 (&optional (port 10000) (function #'identity))
(comm:with-udp-server (server :function function :service port)
;;; stream test
(comm:with-udp-stream (stream "localhost" port :read-timeout 1)
(let ((data "Hello, world!"))
(format stream "~A" data)
(terpri stream) ;; = "~%" or #\Newline
(force-output stream)
(format t "STREAM: Send message: ~A~%" data)
(let ((echo (read-line stream nil nil)))
(format t "STREAM: Recv message: ~A~%" echo))))
;; message test
(comm:with-udp-socket (socket :read-timeout 1)
(let ((data #(1 2 3 4 5 6 7 8 9 10)))
(comm:send-message socket "localhost" port data)
(format t "SOCKET: Send message: ~A~%" data)
(let ((echo (comm:receive-message socket)))
(format t "SOCKET: Recv message: ~A~%" echo))))))
CL-USER 101 > (udp-echo-test-3)
;; server started
STREAM: Send message: Hello, world!
STREAM: Recv message: Hello, world!
SOCKET: Send message: #(1 2 3 4 5 6 7 8 9 10)
SOCKET: Recv message: #(1 2 3 4 5 6 7 8 9 10)
NIL
You can choose either a MESSAGE or STREAM to do a UDP client job. I also improved the UDP server design today with help from my friend - a C-based network programmer, I add a RCVTIMEO into the main loop, and we can always kill the server process successfully now.
I think those API are stable now.
I think you must be a LispWorks customer and can test the 5.1.1 beta program.
yes my research center employer bought the LW32 for MAc Os X licence. We have a Music Composition called OpenMusic that was written in Digitool MCL, and we have to port it to to LW because Digitool broke down and never came up with a Mac Intel version.
I wrote myself an interactive improvisation system using OpenMusic which communicates through udp with the Max/MSP real-time environment : the port ws stuck since LwUdp was not available, and I'm not a network programmer as you guessed.
I'm new to OpenMusic, it seems interest. I'll take some spare time to look at it. Hope this porting work can be done successfully:)
Cheers and thanks again
you will of course be credited in the Lispworks version of OMax (http://www.ircam.fr/equipes/repmus/OMax)
Thanks:)