This directory contains some sample programs using LuaSocket. This code is not supported. tftp.lua -- Trivial FTP client This module implements file retrieval by the TFTP protocol. Its main use was to test the UDP code, but since someone found it usefull, I turned it into a module that is almost official (no uploads, yet). dict.lua -- Dict client The dict.lua module started with a cool simple client for the DICT protocol, written by Luiz Henrique Figueiredo. This new version has been converted into a library, similar to the HTTP and FTP libraries, that can be used from within any luasocket application. Take a look on the source code and you will be able to figure out how to use it. lp.lua -- LPD client library The lp.lua module implements the client part of the Line Printer Daemon protocol, used to print files on Unix machines. It is courtesy of David Burgess! See the source code and the lpr.lua in the examples directory. b64.lua qp.lua eol.lua These are tiny programs that perform Base64, Quoted-Printable and end-of-line marker conversions. get.lua -- file retriever This little program is a client that uses the FTP and HTTP code to implement a command line file graber. Just run lua get.lua [] to download a remote file (either ftp:// or http://) to the specified local file. The program also prints the download throughput, elapsed time, bytes already downloaded etc during download. check-memory.lua -- checks memory consumption This is just to see how much memory each module uses. dispatch.lua -- coroutine based dispatcher This is a first try at a coroutine based non-blocking dispatcher for LuaSocket. Take a look at 'check-links.lua' and at 'forward.lua' to see how to use it. check-links.lua -- HTML link checker program This little program scans a HTML file and checks for broken links. It is similar to check-links.pl by Jamie Zawinski, but uses all facilities of the LuaSocket library and the Lua language. It has not been thoroughly tested, but it should work. Just run lua check-links.lua [-n] {} > output and open the result to see a list of broken links. Make sure you check the '-n' switch. It runs in non-blocking mode, using coroutines, and is MUCH faster! forward.lua -- coroutine based forward server This is a forward server that can accept several connections and transfers simultaneously using non-blocking I/O and the coroutine-based dispatcher. You can run, for example lua forward.lua 8080:proxy.com:3128 to redirect all local conections to port 8080 to the host 'proxy.com' at port 3128. unix.c and unix.h This is an implementation of Unix local domain sockets and demonstrates how to extend LuaSocket with a new type of transport. It has been tested on Linux and on Mac OS X. listener.lua -- socket to stdout talker.lua -- stdin to socket listener.lua and talker.lua are about the simplest applications you can write using LuaSocket. Run 'lua listener.lua' and 'lua talker.lua' on different terminals. Whatever you type on talk.lua will be printed by listen.lua. lpr.lua -- lpr client This is a cool program written by David Burgess to print files using the Line Printer Daemon protocol, widely used in Unix machines. It uses the lp.lua implementation, in the samples directory. Just run 'lua lpr.lua queue=' and the file will print! cddb.lua -- CDDB client This is the first try on a simple CDDB client. Not really useful, but one day it might become a module. daytimeclnt.lua -- day time client Just run the program to retrieve the hour and date in readable form from any server running an UDP daytime daemon. echoclnt.lua -- UDP echo client echosrvr.lua -- UDP echo server These are a UDP echo client/server pair. They work with other client and servers as well. tinyirc.lua -- irc like broadcast server This is a simple server that waits simultaneously on two server sockets for telnet connections. Everything it receives from the telnet clients is broadcasted to every other connected client. It tests the select function and shows how to create a simple server whith LuaSocket. Just run tinyirc.lua and then open as many telnet connections as you want to ports 8080 and 8081. Good luck, Diego.