Hi, usocket project

More work on LispWorks UDP support has been done in these days, now I have both UDP server and client API, and send/recv message  support.

SVN URL is https://cl-net-snmp.svn.sourceforge.net/svnroot/cl-net-snmp/lispworks-udp

P.S. still waiting for usocket UDP API:)

Chun Tian (binghe)




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:)