Hi, USOCKET project
Since your WAIT-FOR-INPUT is so good and portable, I'm extending you to support UDP which used in my project.
I still much like a STREAM interface as the MESSAGE interface, so I implemented them BOTH.
For "STREAM" interface, I made a SOCKET-CONNECT/UDP function:
socket-connect/udp (host port &key (stream nil) (element-type '(unsigned-byte 8)))
If one of host and port is NIL, it'll return a normal, unconnected UDP usocket, or it'll return a "connected" UDP socket, and if the STREAM key also is T, it'll return a STREAM which can be used like a TCP stream.
The "MESSAGE" interface for UDP usocket is this two functions:
socket-send ((socket datagram-usocket) buffer length &key address port)
socket-receive ((socket datagram-usocket) buffer length)
Their API is quite like those in SBCL.
At present, SBCL, CMUCL, OpenMCL and LispWorks' "STREAM" interface is done and tested. The MESSAGE interface haven't been tested.
All my work can be found here: (in a SVN repository)
https://cl-net-snmp.svn.sourceforge.net/svnroot/cl-net-snmp/snmp/trunk/usock...
To support UDP server, I think a "iterate" UDP server support is much straightforward to write: Make a portable thread (use the bordeaux- threads project) and just receive and send message using the MESSAGE interface. Since I also have a SNMP server in my project, I planed to write this UDP server in my USOCKET-UDP directory.
If the maintainer want to merge my code, just do it, or I'll keep them myself.
Regards,
Chun Tian (binghe)