Trivial-sockets: server and client stream sockets for undemanding network applications Usage examples: (with-open-stream (s (trivial-sockets:open-stream "www.google.com" 80)) (format s "HEAD / HTTP/1.0~%Host: www.google.com~%~%") (force-output s) (loop (let ((l (read-line s nil nil))) (unless l (return)) (princ l) (terpri)))) (trivial-sockets:with-server (s (:port 8913 :reuse-address t)) (loop (with-open-stream (c (trivial-sockets:accept-connection s)) (read-line c) (format c "Hi there!~%")))) Proper documentation is in trivial-sockets.texi. If you have Texinfo installed you can convert this to DVI or PDF using texi2dvi or texi2pdf, or use makeinfo to create an Info file for use with Emacs or the standalone info reader. Installation: Use asdf-install. * (asdf:operate 'asdf:load-op 'asdf-install) * (asdf-install:install 'trivial-sockets) Or if you don't have asdf-install but you do have asdf, create a symlink from a directory in your asdf:*central-registry* and run * (asdf:operate 'asdf:load-op 'trivial-sockets) Or if you don't have asdf, either (a) get it, or (b) compile the files by hand in an order that satisfies the dependencies in trivial-sockets.asd References: http://www.cliki.net/asdf-install http://www.cliki.net/asdf Thanks to: (alphabetical order) - Andras Simon for Armed Bear CL support - Edi Weitz, by whose asdf-install work some of the code was inspired - Oliver Markovic, for OpenMCL support - Rudi Schlatte, for a ton of stuff including OpenMCL and CMUCL server support, work on the manual, and also the Stevens justification I needed to make SO_REUSEADDR default - Sven Van Caekenberghe provided Lispworks support