<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi, usocket project<div><br class="webkit-block-placeholder"></div><div>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.</div><div><br class="webkit-block-placeholder"></div><div>SVN URL is <a href="https://cl-net-snmp.svn.sourceforge.net/svnroot/cl-net-snmp/lispworks-udp">https://cl-net-snmp.svn.sourceforge.net/svnroot/cl-net-snmp/lispworks-udp</a></div><div><br class="webkit-block-placeholder"></div><div>P.S. still waiting for usocket UDP API:)</div><div><br class="webkit-block-placeholder"></div><div>Chun Tian (binghe)<br><div><br><blockquote type="cite"><div><blockquote type="cite"><font class="Apple-style-span" color="#000000"><br></font><br></blockquote><br>New message-based API and new test has been submited into SVN head, see this demo:<br><br>(defun udp-echo-test-3 (&optional (port 10000) (function #'identity))<br>  (comm:with-udp-server (server :function function :service port)<br>    ;;; stream test<br>    (comm:with-udp-stream (stream "localhost" port :read-timeout 1)<br>      (let ((data "Hello, world!"))<br>        (format stream "~A" data)<br>        (terpri stream) ;; = "~%" or #\Newline<br>        (force-output stream)<br>        (format t "STREAM: Send message: ~A~%" data)<br>        (let ((echo (read-line stream nil nil)))<br>          (format t "STREAM: Recv message: ~A~%" echo))))<br>    ;; message test<br>    (comm:with-udp-socket (socket :read-timeout 1)<br>      (let ((data #(1 2 3 4 5 6 7 8 9 10)))<br>        (comm:send-message socket "localhost" port data)<br>        (format t "SOCKET: Send message: ~A~%" data)<br>        (let ((echo (comm:receive-message socket)))<br>          (format t "SOCKET: Recv message: ~A~%" echo))))))<br><br>CL-USER 101 > (udp-echo-test-3)<br>;; server started<br>STREAM: Send message: Hello, world!<br>STREAM: Recv message: Hello, world!<br>SOCKET: Send message: #(1 2 3 4 5 6 7 8 9 10)<br>SOCKET: Recv message: #(1 2 3 4 5 6 7 8 9 10)<br>NIL<br><br>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.<br><br>I think those API are stable now.<br><br><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">I think you must be a LispWorks customer and can test the 5.1.1 beta program.<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">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.<br></blockquote><blockquote type="cite">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.<br></blockquote><blockquote type="cite"><br></blockquote><br>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:)<br><br><blockquote type="cite"><br></blockquote><blockquote type="cite">Cheers and thanks again<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">you will of course be credited in the Lispworks version of OMax (<a href="http://www.ircam.fr/equipes/repmus/OMax">http://www.ircam.fr/equipes/repmus/OMax</a>)<br></blockquote><br>Thanks:)<br><br><br></div></blockquote></div><br></div></body></html>