Lisp HUG Maillist Archive

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


[ann] LispWorks-UDP 3.2

Unable to parse email body. Email id is 8654

Updated at: 2020-12-10 08:42 UTC