mirror of
https://github.com/lunarmodules/luasocket.git
synced 2024-12-26 20:38:22 +01:00
Added new instalation section to the manual.
This commit is contained in:
parent
297b32e828
commit
534b0cedf7
6
TODO
6
TODO
@ -1,6 +1,3 @@
|
|||||||
use wim's filter.chain or something better
|
|
||||||
make sure standard libraries are "required" by modules before use.
|
|
||||||
eliminate globals from namespaces created by module().
|
|
||||||
ftp.send/recv return bytes transfered?
|
ftp.send/recv return bytes transfered?
|
||||||
new scheme to choose family/protocol of object to create
|
new scheme to choose family/protocol of object to create
|
||||||
change ltn13 to make sure drawbacks are obvious
|
change ltn13 to make sure drawbacks are obvious
|
||||||
@ -23,6 +20,9 @@ testar os options!
|
|||||||
- proteger ou atomizar o conjunto (timedout, receive), (timedout, send)
|
- proteger ou atomizar o conjunto (timedout, receive), (timedout, send)
|
||||||
- inet_ntoa também é uma merda.
|
- inet_ntoa também é uma merda.
|
||||||
|
|
||||||
|
*eliminate globals from namespaces created by module().
|
||||||
|
*make sure standard libraries are "required" by modules before use.
|
||||||
|
*use wim's filter.chain or something better
|
||||||
*close wasn't returning 1
|
*close wasn't returning 1
|
||||||
*make sure errors not thrown by try() are not caught by protect()
|
*make sure errors not thrown by try() are not caught by protect()
|
||||||
*move wsocket.c:sock_send kludge to buffer.c:sendraw?
|
*move wsocket.c:sock_send kludge to buffer.c:sendraw?
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: DNS support">
|
<meta name="description" content="LuaSocket: DNS support">
|
||||||
<meta name="keywords" content="Lua, Library, DNS, Network, Support">
|
<meta name="keywords" content="Lua, LuaSocket, DNS, Network, Library, Support">
|
||||||
<title>LuaSocket: DNS support</title>
|
<title>LuaSocket: DNS support</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +26,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -114,6 +115,7 @@ message.
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: FTP support">
|
<meta name="description" content="LuaSocket: FTP support">
|
||||||
<meta name="keywords" content="Lua, Library, FTP, Network, Support">
|
<meta name="keywords" content="Lua, LuaSocket, FTP, Network, Library, Support">
|
||||||
<title>LuaSocket: FTP support</title>
|
<title>LuaSocket: FTP support</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +26,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -265,6 +266,7 @@ f, e = ftp.put{
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: HTTP support">
|
<meta name="description" content="LuaSocket: HTTP support">
|
||||||
<meta name="keywords" content="Lua, Library, HTTP, WWW, browser, Network, Support">
|
<meta name="keywords" content="Lua, HTTP, Library, WWW, Browser, Network, Support">
|
||||||
<title>LuaSocket: HTTP support</title>
|
<title>LuaSocket: HTTP support</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -27,6 +27,7 @@
|
|||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
</center>
|
</center>
|
||||||
@ -299,6 +300,7 @@ r, c = http.request {
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="The LuaSocket Homepage">
|
<meta name="description" content="The LuaSocket Homepage">
|
||||||
<meta name="keywords" content="Lua, Library, Network, Support, Internet">
|
<meta name="keywords" content="Lua, LuaSocket, Network, Library, Support, Internet">
|
||||||
<title>LuaSocket: Network support for the Lua language </title>
|
<title>LuaSocket: Network support for the Lua language </title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +26,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -79,7 +80,7 @@ LuaSocket.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Copyright © 1999-2004 Tecgraf/PUC-Rio. All rights reserved. <br>
|
Copyright © 2004 Diego Nehab. All rights reserved. <br>
|
||||||
Author: <A href="http://www.cs.princeton.edu/~diego">Diego Nehab</a>
|
Author: <A href="http://www.cs.princeton.edu/~diego">Diego Nehab</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -88,7 +89,7 @@ Author: <A href="http://www.cs.princeton.edu/~diego">Diego Nehab</a>
|
|||||||
<h2 id=download>Download</h2>
|
<h2 id=download>Download</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
LuaSocket version 2.0 beta2 is now available for download! It is
|
LuaSocket version 2.0 (beta3) is now available for download! It is
|
||||||
compatible with Lua 5.0 and has been tested on
|
compatible with Lua 5.0 and has been tested on
|
||||||
Windows XP, Linux, and Mac OS X.
|
Windows XP, Linux, and Mac OS X.
|
||||||
</p>
|
</p>
|
||||||
@ -99,8 +100,8 @@ The library can be downloaded in source code from the following links:
|
|||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>
|
<p>
|
||||||
<a href="luasocket-2.0-beta2.tar.gz">luasocket-2.0-beta2.tar.gz</a> <br>
|
<a href="luasocket-2.0-beta3.tar.gz">luasocket-2.0-beta3.tar.gz</a> <br>
|
||||||
<a href="luasocket-2.0-beta2.zip">luasocket-2.0-beta2.zip</a>
|
<a href="luasocket-2.0-beta3.zip">luasocket-2.0-beta3.zip</a>
|
||||||
</p>
|
</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@ -116,7 +117,7 @@ LuaSocket a quick try:
|
|||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>
|
<p>
|
||||||
<a href="luasocket-2.0-beta2-win32.zip">luasocket-2.0-beta2-win32.zip</a>
|
<a href="luasocket-2.0-beta3-win32.zip">luasocket-2.0-beta3-win32.zip</a>
|
||||||
</p>
|
</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@ -124,11 +125,15 @@ LuaSocket a quick try:
|
|||||||
The quick and dirty way to use these binaries is to unpack everything into a
|
The quick and dirty way to use these binaries is to unpack everything into a
|
||||||
directory, say <tt>c:\luasocket</tt> (include all Lua files from the
|
directory, say <tt>c:\luasocket</tt> (include all Lua files from the
|
||||||
LuaSocket distrbitution in the same directory too!).
|
LuaSocket distrbitution in the same directory too!).
|
||||||
Then set <tt>LUA_INIT</tt> to load the <tt>lua.lua</tt> helper file:
|
Then set <tt>LUA_INIT</tt> to load the <tt>compat-5.1.lua</tt> and set
|
||||||
|
<tt>LUA_PATH</tt> and <tt>LUA_CPATH</tt> to look for files in that
|
||||||
|
directory:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class=example>
|
<pre class=example>
|
||||||
c:\luasocket\> set LUA_INIT=@lua.lua
|
c:\luasocket\> set LUA_INIT=@compat-5.1.lua
|
||||||
|
c:\luasocket\> set LUA_CPATH=?.dll
|
||||||
|
c:\luasocket\> set LUA_PATH=?.lua
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -142,9 +147,13 @@ c:\luasocket\> lua
|
|||||||
Lua 5.0.2 Copyright (C) 1994-2004 Tecgraf, PUC-Rio
|
Lua 5.0.2 Copyright (C) 1994-2004 Tecgraf, PUC-Rio
|
||||||
> http = require"http"
|
> http = require"http"
|
||||||
> print(http.request"http://www.tecgraf.puc-rio.br/luasocket/")
|
> print(http.request"http://www.tecgraf.puc-rio.br/luasocket/")
|
||||||
--> this file
|
--> this gets dumped to terminal
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
<p> Take a look at the <a href=instalation.html>installation</a> section of
|
||||||
|
the manual to find out how to properly install the library after you are
|
||||||
|
done playing with it. </p>
|
||||||
|
|
||||||
<!-- thanks +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
<!-- thanks +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
|
||||||
<h2 id=thanks>Special thanks</h2>
|
<h2 id=thanks>Special thanks</h2>
|
||||||
@ -165,35 +174,31 @@ has been helping a lot too! Thanks to you all!
|
|||||||
<h2 id=new>What's New</h2>
|
<h2 id=new>What's New</h2>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Changes in the 2.0-beta2 were mostly bug-fixes.
|
The big change for the 2.0 (beta3) release was the adoption of the Lua 5.1
|
||||||
|
package proposal. There were several bug fixes too (a beta is a
|
||||||
|
beta, is a beta).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> Fixed silly last-minute-change bug in HTTP/SMTP;
|
<li> New compat-5.1 distribution:
|
||||||
<li> <tt>usocket.c</tt>/<tt>wsocket.c</tt> look nicer thanks to Mike;
|
<ul>
|
||||||
<li> Finally total timeout is reliable on Windows! (found a pretty
|
<li> Instalation uses new directory structure;
|
||||||
simple work around);
|
<li> Namespace hierarchy is in now back in use (ex. <tt>socket.url</tt>
|
||||||
<li> UDP has a reasonable maximum datagram size (8k);
|
instead of <tt>url</tt>);
|
||||||
<li> <tt>Receive</tt> accepts the prefix optional argument (good for
|
<li> Globals not visible from inside namespaces;
|
||||||
non-blocking);
|
<li> All modules call <tt>require</tt> even for standard libraries;
|
||||||
<li> <b><tt>Send</tt> doesn't support multiple arguments anymore</b>;
|
</ul>
|
||||||
<li> Instead, <tt>send</tt> allows the selection of the substring
|
<li> LTN12 avoids coroutines (so you can go wild on the C side);
|
||||||
to be sent (good for non-blocking);
|
<li> Kludge on wsocket.c:sock_send for windows timeout issue
|
||||||
<li> Fixed bug that caused select return tables not to be associative
|
moved to buffer.c:sendraw;
|
||||||
on windows;
|
<li> <tt>socket.protect </tt>only catches errors thrown by <tt>socket.try</tt>;
|
||||||
<li> Should compile with g++;
|
<li> Fixed <tt>udp:sendto</tt> to call <tt>sock_sendto</tt> instead of
|
||||||
<li> New sample unix domain support;
|
<tt>sock_send</tt>;
|
||||||
<li> New sample LPD support;
|
<li> <tt>close</tt> wasn't returning 1!
|
||||||
<li> Comprehensive error messages;
|
<li> <tt>socket.gettime</tt> returns time since Unix Epoch 1/1/1970 (UTC)
|
||||||
<li> New <tt>getstats</tt> and <tt>setstats</tt> methods to help throttling;
|
<li> <tt>socket.sleep</tt> is robust to interrupts;
|
||||||
<li> <tt>Listen</tt> defaults to 32 backlog;
|
<li> <tt>socket.select</tt> wasn't calling <tt>tm_markstart</tt>;
|
||||||
<li> SMTP/FTP/HTTP fail gracefully;
|
<li> <tt>http.PROXY</tt> etc wasn't working.
|
||||||
<li> <tt>accept</tt>/<tt>connect</tt>/<tt>select</tt> interrupt safe
|
|
||||||
<li> Fixed bug that didn't set accepted sockets as non-blocking
|
|
||||||
<li> <b>New timming functions <tt>sleep</tt> and <tt>gettime</tt> have
|
|
||||||
higher resolution and no wrap around problems</b>;
|
|
||||||
<li> Bug fixes in the manual;
|
|
||||||
<li> Fixed bug of missing cast in <tt>getfd</tt>.
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<!-- incompatible +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
<!-- incompatible +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
@ -201,10 +206,9 @@ higher resolution and no wrap around problems</b>;
|
|||||||
<h3 id=incompatible>Incompatibilities with previous versions</h3>
|
<h3 id=incompatible>Incompatibilities with previous versions</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
<li> Namespaces are hierarchical again. This means that whoever called
|
||||||
<li> New <tt>send</tt> inteface doesn't send multiple arguments anymore;
|
<tt>require("url")</tt> should update their code to
|
||||||
<li> <tt>Time</tt> is replaced by <tt>gettime</tt> with advantage.
|
<tt>require("socket.url")</tt>.
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<!-- old ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
<!-- old ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
@ -225,6 +229,8 @@ those that have compatibility issues.
|
|||||||
<center>
|
<center>
|
||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
149
doc/installation.html
Normal file
149
doc/installation.html
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||||
|
"http://www.w3.org/TR/html4/strict.dtd">
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="description" content="LuaSocket: Introduction to the core">
|
||||||
|
<meta name="keywords" content="Lua, LuaSocket, TCP, UDP, Network, Support,
|
||||||
|
Installation">
|
||||||
|
<title>LuaSocket: Instalation</title>
|
||||||
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- header +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
|
||||||
|
<div class=header>
|
||||||
|
<hr>
|
||||||
|
<center>
|
||||||
|
<table summary="LuaSocket logo">
|
||||||
|
<tr><td align=center><a href="http://www.lua.org">
|
||||||
|
<img width=128 height=128 border=0 alt="LuaSocket" src="luasocket.png">
|
||||||
|
</a></td></tr>
|
||||||
|
<tr><td align=center valign=top>Network support for the Lua language
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<p class=bar>
|
||||||
|
<a href="home.html">home</a> ·
|
||||||
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
|
<a href="introduction.html">introduction</a> ·
|
||||||
|
<a href="reference.html">reference</a>
|
||||||
|
</p>
|
||||||
|
</center>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- instalation ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
|
||||||
|
<h2>Instalation</h2>
|
||||||
|
|
||||||
|
<p> LuaSocket 2.0 uses the new package proposal for Lua 5.1, throught the
|
||||||
|
compatibility module <a href=http://www.keplerproject.org/compat/>
|
||||||
|
Compat-5.1</a> released in conjunction with Roberto Ierusalimschy and <a
|
||||||
|
href=http://www.keplerproject.org/">The Kepler project</a>. The proposal
|
||||||
|
was considered important enough by the community to justify early adoption.
|
||||||
|
All Lua library developers are encouraged to change their libraries in
|
||||||
|
preparation for the release of Lua 5.1. </p>
|
||||||
|
|
||||||
|
<p> As far as LuaSocket is concerned, this means that whoever is
|
||||||
|
deploying a solution that uses LuaSocket has a lot of freedom. Here we
|
||||||
|
describe only the standard distribution. If the standard doesn't meet your
|
||||||
|
needs, we refer you to the Lua discussion list, where any quesetion about
|
||||||
|
the package scheme will likely be answered promptly.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Directory structure</h3>
|
||||||
|
|
||||||
|
<p> The new package scheme has a root directory for the libraries installed
|
||||||
|
on a given system. Let's call this directory <tt><ROOT></tt>.
|
||||||
|
On my system, this is the <tt>/usr/local/share/lua/5.0</tt> directory.
|
||||||
|
Here is the standard LuaSocket distribution directory structure:</p>
|
||||||
|
|
||||||
|
<pre class=example>
|
||||||
|
<ROOT>/compat-5.1.lua
|
||||||
|
<ROOT>/socket.lua
|
||||||
|
<ROOT>/lsocket.dll
|
||||||
|
<ROOT>/mime.lua
|
||||||
|
<ROOT>/lmime.dll
|
||||||
|
<ROOT>/ltn12.lua
|
||||||
|
<ROOT>/socket/http.lua
|
||||||
|
<ROOT>/socket/tp.lua
|
||||||
|
<ROOT>/socket/ftp.lua
|
||||||
|
<ROOT>/socket/smtp.lua
|
||||||
|
<ROOT>/socket/url.lua
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> Naturally, on Unix systems, <tt>lsocket.dll</tt> and <tt>lmime.dll</tt>
|
||||||
|
would be replaced by <tt>lsocket.so</tt> and <tt>lmime.so</tt>. In Mac OS
|
||||||
|
X, they would be replaced by <tt>lsocket.dylib</tt> and
|
||||||
|
<tt>lmime.dylib</tt>. </p>
|
||||||
|
|
||||||
|
<p> In order for the interpreter to find all LuaSocket components, three
|
||||||
|
environment variables need to be set. The first environment variable tells
|
||||||
|
the interpreter to load the <tt>compat-5.1.lua</tt> module. </p>
|
||||||
|
|
||||||
|
<pre class=example>
|
||||||
|
LUA_INIT=@<ROOT>/compat-5.1.lua
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
The other two environment variables instruct the compatibility module to
|
||||||
|
look for dynamic libraries and modules in the appropriate directories and
|
||||||
|
with the appropriate filename extensions.
|
||||||
|
|
||||||
|
<pre class=example>
|
||||||
|
LUA_PATH=<ROOT>/?.lua;?.lua
|
||||||
|
LUA_CPATH=<ROOT>/?.dll;?.dll
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> Again, naturally, in Unix the shared library extension would be
|
||||||
|
<tt>.so</tt> instead of <tt>.dll</tt> and on Mac OS X they would be
|
||||||
|
<tt>.dylib</tt></p>
|
||||||
|
|
||||||
|
<h3>Using LuaSocket</h3>
|
||||||
|
|
||||||
|
<p> With the above setup, and an interpreter with shared library support,
|
||||||
|
it should be easy to use LuaSocket. Just fire the interpreter and use the
|
||||||
|
<tt>require</tt> function to gain access to whatever module you need:</p>
|
||||||
|
|
||||||
|
<pre class=example>
|
||||||
|
Lua 5.0.2 Copyright (C) 1994-2004 Tecgraf, PUC-Rio
|
||||||
|
> socket = require("socket")
|
||||||
|
> print(socket.VERSION)
|
||||||
|
--> LuaSocket 2.0 (beta3)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> Each module loads their dependencies automatically, so you only need to
|
||||||
|
load the modues you are directly dependent upon. <p>
|
||||||
|
|
||||||
|
<pre class=example>
|
||||||
|
Lua 5.0.2 Copyright (C) 1994-2004 Tecgraf, PUC-Rio
|
||||||
|
> http = require("socket.http")
|
||||||
|
> print(http.get("http://www.tecgraf.puc-rio.br/luasocket"))
|
||||||
|
--> homepage gets dumped to terminal
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
|
||||||
|
<div class=footer>
|
||||||
|
<hr>
|
||||||
|
<center>
|
||||||
|
<p class=bar>
|
||||||
|
<a href="home.html">home</a> ·
|
||||||
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
|
<a href="introduction.html">introduction</a> ·
|
||||||
|
<a href="reference.html">reference</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<small>
|
||||||
|
Last modified by Diego Nehab on <br>
|
||||||
|
Thu Jun 17 02:47:21 EDT 2004
|
||||||
|
</small>
|
||||||
|
</p>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: Introduction to the core">
|
<meta name="description" content="LuaSocket: Introduction to the core">
|
||||||
<meta name="keywords" content="Lua, Library, TCP, UDP, Network, Support">
|
<meta name="keywords" content="Lua, LuaSocket, TCP, UDP, Network,
|
||||||
|
Library, Support">
|
||||||
<title>LuaSocket: Introduction to the core</title>
|
<title>LuaSocket: Introduction to the core</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +27,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -104,29 +106,6 @@ Together, these changes make network programming in LuaSocket much simpler
|
|||||||
than it is in C, as the following sections will show.
|
than it is in C, as the following sections will show.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- initializing +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
|
||||||
|
|
||||||
<h3>Initializing the library</h3>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The core LuaSocket is almost entirely implemented in C. It is
|
|
||||||
usually available as a dynamic library which the interpreter can load
|
|
||||||
with the help of a loader module written in Lua.
|
|
||||||
Beginning with version 2.0 and following the Lua 5.0 trend, all LuaSocket
|
|
||||||
functionality is defined inside tables (or rather namespaces). No global
|
|
||||||
variables are ever created.
|
|
||||||
Namespaces are obtained with the <tt>require</tt> Lua function, which loads
|
|
||||||
and initializes any required library and returns the namespace.
|
|
||||||
For example, the core functionality or LuaSocket is usually available
|
|
||||||
from the "<tt>socket</tt>" namespace.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre class="example">
|
|
||||||
socket = require("socket")
|
|
||||||
print(socket.VERSION)
|
|
||||||
--> LuaSocket 2.0
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<!-- tcp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
<!-- tcp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
|
||||||
<h3 id=tcp>TCP</h3>
|
<h3 id=tcp>TCP</h3>
|
||||||
@ -318,6 +297,17 @@ io.write(socket.try((udp:receive())))
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
|
<!-- More +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
|
||||||
|
<h3 id=more>Much more</h3>
|
||||||
|
|
||||||
|
<p> LuaSocket offers much more than TCP and UDP support. As the library
|
||||||
|
evolved, support for <a href=http.html>HTTP</a>, <a href=ftp.html>FTP</a>,
|
||||||
|
<a href=smtp.html>SMTP</a>, <a href=mime.html>MIME</a>, <a
|
||||||
|
href=url.html>URLs</a> and much more was made available.</a> These are
|
||||||
|
mostly implemented in Lua itself, with critical parts implemented in C for
|
||||||
|
efficiency</p>
|
||||||
|
|
||||||
<!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
<!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
||||||
|
|
||||||
<div class=footer>
|
<div class=footer>
|
||||||
@ -326,6 +316,7 @@ io.write(socket.try((udp:receive())))
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: LTN12 support">
|
<meta name="description" content="LuaSocket: LTN12 support">
|
||||||
<meta name="keywords" content="Lua, Library, Filters, Source, Sink,
|
<meta name="keywords" content="Lua, LuaSocket, Filters, Source, Sink,
|
||||||
Pump, Support">
|
Pump, Support, Library">
|
||||||
<title>LuaSocket: LTN12 module</title>
|
<title>LuaSocket: LTN12 module</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -27,6 +27,7 @@ Pump, Support">
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -412,6 +413,7 @@ Creates and returns a source that produces the contents of a
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: MIME support">
|
<meta name="description" content="LuaSocket: MIME support">
|
||||||
<meta name="keywords" content="Lua, Library, MIME, Support">
|
<meta name="keywords" content="Lua, LuaSocket, MIME, Library, Support">
|
||||||
<title>LuaSocket: MIME module</title>
|
<title>LuaSocket: MIME module</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +26,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -458,6 +459,7 @@ marker.
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: Index to reference manual">
|
<meta name="description" content="LuaSocket: Index to reference manual">
|
||||||
<meta name="keywords" content="Lua, Library, Index, Manual, Network, Support">
|
<meta name="keywords" content="Lua, LuaSocket, Index, Manual, Network, Library,
|
||||||
|
Support, Manual">
|
||||||
<title>LuaSocket: Index to reference manual</title>
|
<title>LuaSocket: Index to reference manual</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +27,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -220,6 +222,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: SMTP support">
|
<meta name="description" content="LuaSocket: SMTP support">
|
||||||
<meta name="keywords" content="Lua, Library, SMTP, e-mail, MIME, Multipart, Support">
|
<meta name="keywords" content="Lua, LuaSocket, SMTP, E-Mail, MIME, Multipart,
|
||||||
|
Library, Support">
|
||||||
<title>LuaSocket: SMTP support</title>
|
<title>LuaSocket: SMTP support</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +27,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -394,6 +396,7 @@ r, e = smtp.send{
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: The core namespace">
|
<meta name="description" content="LuaSocket: The core namespace">
|
||||||
<meta name="keywords" content="Lua, Library, socket, Network, Support">
|
<meta name="keywords" content="Lua, LuaSocket, Socket, Network, Library, Support">
|
||||||
<title>LuaSocket: The socket namespace</title>
|
<title>LuaSocket: The socket namespace</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +26,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -382,6 +383,7 @@ This constant has a string describing the current LuaSocket version.
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: The TCP/IP support">
|
<meta name="description" content="LuaSocket: The TCP/IP support">
|
||||||
<meta name="keywords" content="Lua, Library, socket, TCP, Network, Support">
|
<meta name="keywords" content="Lua, LuaSocket, Socket, TCP, Library, Network, Support">
|
||||||
<title>LuaSocket: TCP/IP support</title>
|
<title>LuaSocket: TCP/IP support</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +26,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -527,6 +528,7 @@ This function returns 1.
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: The UDP support">
|
<meta name="description" content="LuaSocket: The UDP support">
|
||||||
<meta name="keywords" content="Lua, Library, socket, UDP, Network, Support">
|
<meta name="keywords" content="Lua, LuaSocket, Socket, UDP, Library, Network, Support">
|
||||||
<title>LuaSocket: UDP support</title>
|
<title>LuaSocket: UDP support</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +26,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -398,6 +399,7 @@ imperative nature obvious.
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta name="description" content="LuaSocket: URL manipulation">
|
<meta name="description" content="LuaSocket: URL manipulation">
|
||||||
<meta name="keywords" content="Lua, Library, URL, link, Network, Support">
|
<meta name="keywords" content="Lua, LuaSocket, URL, Library, Link, Network, Support">
|
||||||
<title>LuaSocket: URL support</title>
|
<title>LuaSocket: URL support</title>
|
||||||
<link rel="stylesheet" href="reference.css" type="text/css">
|
<link rel="stylesheet" href="reference.css" type="text/css">
|
||||||
</head>
|
</head>
|
||||||
@ -26,6 +26,7 @@
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#download">download</a> ·
|
<a href="home.html#download">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
@ -311,6 +312,7 @@ The function returns the decoded string.
|
|||||||
<p class=bar>
|
<p class=bar>
|
||||||
<a href="home.html">home</a> ·
|
<a href="home.html">home</a> ·
|
||||||
<a href="home.html#down">download</a> ·
|
<a href="home.html#down">download</a> ·
|
||||||
|
<a href="instalation.html">instalation</a> ·
|
||||||
<a href="introduction.html">introduction</a> ·
|
<a href="introduction.html">introduction</a> ·
|
||||||
<a href="reference.html">reference</a>
|
<a href="reference.html">reference</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -7,8 +7,11 @@
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- Declare module and import dependencies
|
-- Declare module and import dependencies
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
module("socket")
|
local base = require("base")
|
||||||
|
local string = require("string")
|
||||||
|
local math = require("math")
|
||||||
local socket = require("lsocket")
|
local socket = require("lsocket")
|
||||||
|
module("socket")
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- Auxiliar functions
|
-- Auxiliar functions
|
||||||
@ -40,11 +43,11 @@ socket.try = socket.newtry()
|
|||||||
|
|
||||||
function socket.choose(table)
|
function socket.choose(table)
|
||||||
return function(name, opt1, opt2)
|
return function(name, opt1, opt2)
|
||||||
if type(name) ~= "string" then
|
if base.type(name) ~= "string" then
|
||||||
name, opt1, opt2 = "default", name, opt1
|
name, opt1, opt2 = "default", name, opt1
|
||||||
end
|
end
|
||||||
local f = table[name or "nil"]
|
local f = table[name or "nil"]
|
||||||
if not f then error("unknown key (" .. tostring(name) .. ")", 3)
|
if not f then base.error("unknown key (".. base.tostring(name) ..")", 3)
|
||||||
else return f(opt1, opt2) end
|
else return f(opt1, opt2) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -59,7 +62,7 @@ socket.sinkt = {}
|
|||||||
socket.BLOCKSIZE = 2048
|
socket.BLOCKSIZE = 2048
|
||||||
|
|
||||||
socket.sinkt["http-chunked"] = function(sock)
|
socket.sinkt["http-chunked"] = function(sock)
|
||||||
return setmetatable({
|
return base.setmetatable({
|
||||||
getfd = function() return sock:getfd() end,
|
getfd = function() return sock:getfd() end,
|
||||||
dirty = function() return sock:dirty() end
|
dirty = function() return sock:dirty() end
|
||||||
}, {
|
}, {
|
||||||
@ -72,7 +75,7 @@ socket.sinkt["http-chunked"] = function(sock)
|
|||||||
end
|
end
|
||||||
|
|
||||||
socket.sinkt["close-when-done"] = function(sock)
|
socket.sinkt["close-when-done"] = function(sock)
|
||||||
return setmetatable({
|
return base.setmetatable({
|
||||||
getfd = function() return sock:getfd() end,
|
getfd = function() return sock:getfd() end,
|
||||||
dirty = function() return sock:dirty() end
|
dirty = function() return sock:dirty() end
|
||||||
}, {
|
}, {
|
||||||
@ -86,7 +89,7 @@ socket.sinkt["close-when-done"] = function(sock)
|
|||||||
end
|
end
|
||||||
|
|
||||||
socket.sinkt["keep-open"] = function(sock)
|
socket.sinkt["keep-open"] = function(sock)
|
||||||
return setmetatable({
|
return base.setmetatable({
|
||||||
getfd = function() return sock:getfd() end,
|
getfd = function() return sock:getfd() end,
|
||||||
dirty = function() return sock:dirty() end
|
dirty = function() return sock:dirty() end
|
||||||
}, {
|
}, {
|
||||||
@ -102,7 +105,7 @@ socket.sinkt["default"] = socket.sinkt["keep-open"]
|
|||||||
socket.sink = socket.choose(socket.sinkt)
|
socket.sink = socket.choose(socket.sinkt)
|
||||||
|
|
||||||
socket.sourcet["by-length"] = function(sock, length)
|
socket.sourcet["by-length"] = function(sock, length)
|
||||||
return setmetatable({
|
return base.setmetatable({
|
||||||
getfd = function() return sock:getfd() end,
|
getfd = function() return sock:getfd() end,
|
||||||
dirty = function() return sock:dirty() end
|
dirty = function() return sock:dirty() end
|
||||||
}, {
|
}, {
|
||||||
@ -119,7 +122,7 @@ end
|
|||||||
|
|
||||||
socket.sourcet["until-closed"] = function(sock)
|
socket.sourcet["until-closed"] = function(sock)
|
||||||
local done
|
local done
|
||||||
return setmetatable({
|
return base.setmetatable({
|
||||||
getfd = function() return sock:getfd() end,
|
getfd = function() return sock:getfd() end,
|
||||||
dirty = function() return sock:dirty() end
|
dirty = function() return sock:dirty() end
|
||||||
}, {
|
}, {
|
||||||
@ -137,7 +140,7 @@ socket.sourcet["until-closed"] = function(sock)
|
|||||||
end
|
end
|
||||||
|
|
||||||
socket.sourcet["http-chunked"] = function(sock)
|
socket.sourcet["http-chunked"] = function(sock)
|
||||||
return setmetatable({
|
return base.setmetatable({
|
||||||
getfd = function() return sock:getfd() end,
|
getfd = function() return sock:getfd() end,
|
||||||
dirty = function() return sock:dirty() end
|
dirty = function() return sock:dirty() end
|
||||||
}, {
|
}, {
|
||||||
@ -145,7 +148,7 @@ socket.sourcet["http-chunked"] = function(sock)
|
|||||||
-- get chunk size, skip extention
|
-- get chunk size, skip extention
|
||||||
local line, err = sock:receive()
|
local line, err = sock:receive()
|
||||||
if err then return nil, err end
|
if err then return nil, err end
|
||||||
local size = tonumber(string.gsub(line, ";.*", ""), 16)
|
local size = base.tonumber(string.gsub(line, ";.*", ""), 16)
|
||||||
if not size then return nil, "invalid chunk size" end
|
if not size then return nil, "invalid chunk size" end
|
||||||
-- was it the last chunk?
|
-- was it the last chunk?
|
||||||
if size <= 0 then
|
if size <= 0 then
|
||||||
@ -168,3 +171,5 @@ end
|
|||||||
socket.sourcet["default"] = socket.sourcet["until-closed"]
|
socket.sourcet["default"] = socket.sourcet["until-closed"]
|
||||||
|
|
||||||
socket.source = socket.choose(socket.sourcet)
|
socket.source = socket.choose(socket.sourcet)
|
||||||
|
|
||||||
|
base.setmetatable(socket, nil)
|
||||||
|
@ -23,7 +23,7 @@ http.TIMEOUT = 10
|
|||||||
local t = socket.gettime()
|
local t = socket.gettime()
|
||||||
|
|
||||||
host = host or "diego.student.princeton.edu"
|
host = host or "diego.student.princeton.edu"
|
||||||
proxy = proxy or "http://dell-diego.cs.princeton.edu:3128"
|
proxy = proxy or "http://localhost:3128"
|
||||||
prefix = prefix or "/luasocket-test"
|
prefix = prefix or "/luasocket-test"
|
||||||
cgiprefix = cgiprefix or "/luasocket-test-cgi"
|
cgiprefix = cgiprefix or "/luasocket-test-cgi"
|
||||||
index_file = "test/index.html"
|
index_file = "test/index.html"
|
||||||
|
Loading…
Reference in New Issue
Block a user