[Announce] LispWorks-UDP 3.0, 2.2, and 1.1
Hi, LispWorks User Group I'm glad to release three new versions of LispWorks-UDP, the UDP networking support for LispWorks. New versions can be download from sourceforge and common-lisp.net: http://sourceforge.net/project/showfiles.php?group_id=209101&package_id=277467 http://common-lisp.net/project/cl-net-snmp/release/ [new feature in 3.0] The biggest feature in lispworks-udp 3.0 is the "Auto-retransmit support". Since every real UDP networking application must deal with the timeout and retransmit issue (because UDP isn't reliable, packets can get lost for reasons), Now I add this support as a high-level SYNC- MESSAGE function. The retransmit algorithm is come from TCP networking, based on Van Jacobson's paper "Congestion Avoidance and Control" in 1988. The UDP message sending timeout is between 2~60 seconds, which can be learnt automatically. For sample usage, see test.lisp in the source code. ______________________ | COMM:SYNC-MESSAGE [Function] Summary Send (then receive) UDP message with retransmit support. Signature sync-message socket message &optional host service &key (max-receive-length +max-udp-message-size+) (encode-function #'default-rtt-function) (decode-function #'default-rtt-function) Arguments and Values socket A socket fd. message Anything can fit the first arguemnt of encode-function. host Remote hostname or IP address as string or integer service Remote service name or port, as string or integer max-receive-length Max message size when try to receive-message. encode-function A encode function as type of (function (t) (values sequence integer)) decode-function A encode function as type of (function (sequence) (values t integer)) Description SYNC-MESSAGE is a high-level UDP function. It can fit following requirement on UDP networking: * Resend UDP packets when sending or receiving packet get lost. * Compare the "sequence number" of a receiving packet to match the sending one. * Direct send custom message format, let encode/decode function to do the low-level job. For sample usage, see RTT-TEST-* functions in test.lisp This function is added from LispWorks-UDP 3.0 See also COMM:SEND-MESSAGE, COMM:RECEIVE-MESSAGE [bugfix in 1.x and 2.x branch] Recently I found SET-SOCKET-RECEIVE-TIMEOUT actually not working on win32 platform. Version 1.1 and 2.2 fix that. Regards, Chun Tian (binghe)