aboutsummaryrefslogtreecommitdiff
path: root/docs/tcp.html
diff options
context:
space:
mode:
authorCaleb Maclennan <caleb@alerque.com>2023-11-10 09:12:04 +0300
committerCaleb Maclennan <caleb@alerque.com>2023-11-10 09:12:04 +0300
commit5c4fc93d5f4137bf4c22ddf1a048c907a4a26727 (patch)
treea9a68e1f6a9c3bfe2b64fa1c3a4098865b7d3b5d /docs/tcp.html
parentccef3bc4e2aa6ee5b997a80aabb58f4ff0b0e98f (diff)
parent43a97b7f0053313b43906371dbdc226271e6c8ab (diff)
downloadluasocket-hjelmeland-patch-1.tar.gz
luasocket-hjelmeland-patch-1.tar.bz2
luasocket-hjelmeland-patch-1.zip
Merge branch 'master' into hjelmeland-patch-1hjelmeland-patch-1
Diffstat (limited to 'docs/tcp.html')
-rw-r--r--docs/tcp.html738
1 files changed, 738 insertions, 0 deletions
diff --git a/docs/tcp.html b/docs/tcp.html
new file mode 100644
index 0000000..a26228d
--- /dev/null
+++ b/docs/tcp.html
@@ -0,0 +1,738 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
3<html>
4
5<head>
6<meta name="description" content="LuaSocket: The TCP/IP support">
7<meta name="keywords" content="Lua, LuaSocket, Socket, TCP, Library, Network, Support">
8<title>LuaSocket: TCP/IP support</title>
9<link rel="stylesheet" href="reference.css" type="text/css">
10</head>
11
12<body>
13
14<!-- header +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
15
16<div class="header">
17<hr>
18<center>
19<table summary="LuaSocket logo">
20<tr><td align="center"><a href="http://www.lua.org">
21<img width="128" height="128" border="0" alt="LuaSocket" src="luasocket.png">
22</a></td></tr>
23<tr><td align="center" valign="top">Network support for the Lua language
24</td></tr>
25</table>
26<p class="bar">
27<a href="index.html">home</a> &middot;
28<a href="index.html#download">download</a> &middot;
29<a href="installation.html">installation</a> &middot;
30<a href="introduction.html">introduction</a> &middot;
31<a href="reference.html">reference</a>
32</p>
33</center>
34<hr>
35</div>
36
37<!-- tcp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
38
39<h2 id="tcp">TCP</h2>
40
41<!-- accept +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
42
43<p class="name" id="accept">
44server:<b>accept()</b>
45</p>
46
47<p class="description">
48Waits for a remote connection on the server
49object and returns a client object representing that connection.
50</p>
51
52<p class="return">
53If a connection is successfully initiated, a client object is returned.
54If a timeout condition is met, the method returns <b><tt>nil</tt></b>
55followed by the error string '<tt>timeout</tt>'. Other errors are
56reported by <b><tt>nil</tt></b> followed by a message describing the error.
57</p>
58
59<p class="note">
60Note: calling <a href="socket.html#select"><tt>socket.select</tt></a>
61with a server object in
62the <tt>recvt</tt> parameter before a call to <tt>accept</tt> does
63<em>not</em> guarantee <tt>accept</tt> will return immediately. Use the <a
64href="#settimeout"><tt>settimeout</tt></a> method or <tt>accept</tt>
65might block until <em>another</em> client shows up.
66</p>
67
68<!-- bind +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
69
70<p class="name" id="bind">
71master:<b>bind(</b>address, port<b>)</b>
72</p>
73
74<p class="description">
75Binds a master object to <tt>address</tt> and <tt>port</tt> on the
76local host.
77</p>
78
79<p class="parameters">
80<tt>Address</tt> can be an IP address or a host name.
81<tt>Port</tt> must be an integer number in the range [0..64K).
82If <tt>address</tt>
83is '<tt>*</tt>', the system binds to all local interfaces
84using the <tt>INADDR_ANY</tt> constant or
85<tt>IN6ADDR_ANY_INIT</tt>, according to the family.
86If <tt>port</tt> is 0, the system automatically
87chooses an ephemeral port.
88</p>
89
90<p class="return">
91In case of success, the method returns 1. In case of error, the
92method returns <b><tt>nil</tt></b> followed by an error message.
93</p>
94
95<p class="note">
96Note: The function <a href="socket.html#bind"><tt>socket.bind</tt></a>
97is available and is a shortcut for the creation of server sockets.
98</p>
99
100<!-- close ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
101
102<p class="name" id="close">
103master:<b>close()</b><br>
104client:<b>close()</b><br>
105server:<b>close()</b>
106</p>
107
108<p class="description">
109Closes a TCP object. The internal socket used by the object is closed
110and the local address to which the object was
111bound is made available to other applications. No further operations
112(except for further calls to the <tt>close</tt> method) are allowed on
113a closed socket.
114</p>
115
116<p class="note">
117Note: It is important to close all used sockets once they are not
118needed, since, in many systems, each socket uses a file descriptor,
119which are limited system resources. Garbage-collected objects are
120automatically closed before destruction, though.
121</p>
122
123<!-- connect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
124
125<p class="name" id="connect">
126master:<b>connect(</b>address, port<b>)</b>
127</p>
128
129<p class="description">
130Attempts to connect a master object to a remote host, transforming it into a
131client object.
132Client objects support methods
133<a href="#send"><tt>send</tt></a>,
134<a href="#receive"><tt>receive</tt></a>,
135<a href="#getsockname"><tt>getsockname</tt></a>,
136<a href="#getpeername"><tt>getpeername</tt></a>,
137<a href="#settimeout"><tt>settimeout</tt></a>,
138and <a href="#close"><tt>close</tt></a>.
139</p>
140
141<p class="parameters">
142<tt>Address</tt> can be an IP address or a host name.
143<tt>Port</tt> must be an integer number in the range [1..64K).
144</p>
145
146<p class="return">
147In case of error, the method returns <b><tt>nil</tt></b> followed by a string
148describing the error. In case of success, the method returns 1.
149</p>
150
151<p class="note">
152Note: The function <a href="socket.html#connect"><tt>socket.connect</tt></a>
153is available and is a shortcut for the creation of client sockets.
154</p>
155
156<p class="note">
157Note: Starting with LuaSocket 2.0,
158the <a href="#settimeout"><tt>settimeout</tt></a>
159method affects the behavior of <tt>connect</tt>, causing it to return
160with an error in case of a timeout. If that happens, you can still call <a
161href="socket.html#select"><tt>socket.select</tt></a> with the socket in the
162<tt>sendt</tt> table. The socket will be writable when the connection is
163established.
164</p>
165
166<p class="note">
167Note: Starting with LuaSocket 3.0, the host name resolution
168depends on whether the socket was created by
169<a href="#socket.tcp"><tt>socket.tcp</tt></a>,
170<a href="#socket.tcp4"><tt>socket.tcp4</tt></a> or
171<a href="#socket.tcp6"><tt>socket.tcp6</tt></a>. Addresses from
172the appropriate family (or both) are tried in the order
173returned by the resolver until the
174first success or until the last failure. If the timeout was
175set to zero, only the first address is tried.
176</p>
177
178<!-- dirty +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
179
180<p class="name" id="dirty">
181master:<b>dirty()</b><br>
182client:<b>dirty()</b><br>
183server:<b>dirty()</b>
184</p>
185
186<p class="description">
187Check the read buffer status.
188</p>
189
190<p class="return">
191Returns <tt>true</tt> if there is any data in the read buffer, <tt>false</tt> otherwise.
192</p>
193
194<p class="note">
195Note: <b>This is an internal method, use at your own risk.</b>
196</p>
197
198
199<!-- getfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
200
201<p class="name" id="getfd">
202master:<b>getfd()</b><br>
203client:<b>getfd()</b><br>
204server:<b>getfd()</b>
205</p>
206
207<p class="description">
208Returns the underling socket descriptor or handle associated to the object.
209</p>
210
211<p class="return">
212The descriptor or handle. In case the object has been closed, the return value
213will be -1. For an invalid socket it will be <a href="socket.html#socketinvalid">
214<tt>_SOCKETINVALID</tt></a>.
215</p>
216
217<p class="note">
218Note: <b>This is an internal method. Unlikely to be
219portable. Use at your own risk. </b>
220</p>
221
222
223<!-- getoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
224
225<p class="name" id="getoption">
226client:<b>getoption(option)</b><br>
227server:<b>getoption(option)</b>
228</p>
229
230<p class="description">
231Gets options for the TCP object.
232See <a href="#setoption"><tt>setoption</tt></a> for description of the
233option names and values.
234</p>
235
236<p class="parameters">
237<tt>Option</tt> is a string with the option name.</p>
238<ul>
239<li> '<tt>keepalive</tt>'</li>
240<li> '<tt>linger</tt>'</li>
241<li> '<tt>reuseaddr</tt>'</li>
242<li> '<tt>tcp-nodelay</tt>'</li>
243</ul>
244
245<p class="return">
246The method returns the option <tt>value</tt> in case of success, or
247<b><tt>nil</tt></b> followed by an error message otherwise.
248</p>
249
250
251<!-- getpeername ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
252
253<p class="name" id="getpeername">
254client:<b>getpeername()</b>
255</p>
256
257<p class="description">
258Returns information about the remote side of a connected client object.
259</p>
260
261<p class="return">
262Returns a string with the IP address of the peer, the
263port number that peer is using for the connection,
264and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
265In case of error, the method returns <b><tt>nil</tt></b>.
266</p>
267
268<p class="note">
269Note: It makes no sense to call this method on server objects.
270</p>
271
272<!-- getsockname ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
273
274<p class="name" id="getsockname">
275master:<b>getsockname()</b><br>
276client:<b>getsockname()</b><br>
277server:<b>getsockname()</b>
278</p>
279
280<p class="description">
281Returns the local address information associated to the object.
282</p>
283
284<p class="return">
285The method returns a string with local IP address, a number with
286the local port,
287and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
288In case of error, the method returns <b><tt>nil</tt></b>.
289</p>
290
291<!-- getstats +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
292
293<p class="name" id="getstats">
294master:<b>getstats()</b><br>
295client:<b>getstats()</b><br>
296server:<b>getstats()</b><br>
297</p>
298
299<p class="description">
300Returns accounting information on the socket, useful for throttling
301of bandwidth.
302</p>
303
304<p class="return">
305The method returns the number of bytes received, the number of bytes sent,
306and the age of the socket object in seconds.
307</p>
308
309<!-- gettimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
310
311<p class="name" id="gettimeout">
312master:<b>gettimeout()</b><br>
313client:<b>gettimeout()</b><br>
314server:<b>gettimeout()</b>
315</p>
316
317<p class="description">
318Returns the current block timeout followed by the curent
319total timeout.
320</p>
321
322
323<!-- listen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
324
325<p class="name" id="listen">
326master:<b>listen(</b>backlog<b>)</b>
327</p>
328
329<p class="description">
330Specifies the socket is willing to receive connections, transforming the
331object into a server object. Server objects support the
332<a href="#accept"><tt>accept</tt></a>,
333<a href="#getsockname"><tt>getsockname</tt></a>,
334<a href="#setoption"><tt>setoption</tt></a>,
335<a href="#settimeout"><tt>settimeout</tt></a>,
336and <a href="#close"><tt>close</tt></a> methods.
337</p>
338
339<p class="parameters">
340The parameter <tt>backlog</tt> specifies the number of client
341connections that can
342be queued waiting for service. If the queue is full and another client
343attempts connection, the connection is refused.
344</p>
345
346<p class="return">
347In case of success, the method returns 1. In case of error, the
348method returns <b><tt>nil</tt></b> followed by an error message.
349</p>
350
351<!-- receive ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
352
353<p class="name" id="receive">
354client:<b>receive(</b>[pattern [, prefix]]<b>)</b>
355</p>
356
357<p class="description">
358Reads data from a client object, according to the specified <em>read
359pattern</em>. Patterns follow the Lua file I/O format, and the difference in performance between all patterns is negligible.
360</p>
361
362<p class="parameters">
363<tt>Pattern</tt> can be any of the following:
364</p>
365
366<ul>
367<li> '<tt>*a</tt>': reads from the socket until the connection is
368closed. No end-of-line translation is performed;</li>
369<li> '<tt>*l</tt>': reads a line of text from the socket. The line is
370terminated by a LF character (ASCII&nbsp;10), optionally preceded by a
371CR character (ASCII&nbsp;13). The CR and LF characters are not included in
372the returned line. In fact, <em>all</em> CR characters are
373ignored by the pattern. This is the default pattern;</li>
374<li> <tt>number</tt>: causes the method to read a specified <tt>number</tt>
375of bytes from the socket.</li>
376</ul>
377
378<p class="parameters">
379<tt>Prefix</tt> is an optional string to be concatenated to the beginning
380of any received data before return.
381</p>
382
383<p class="return">
384If successful, the method returns the received pattern. In case of error,
385the method returns <tt><b>nil</b></tt> followed by an error
386message, followed by a (possibly empty) string containing
387the partial that was received. The error message can be
388the string '<tt>closed</tt>' in case the connection was
389closed before the transmission was completed or the string
390'<tt>timeout</tt>' in case there was a timeout during the operation.
391</p>
392
393<p class="note">
394<b>Important note</b>: This function was changed <em>severely</em>. It used
395to support multiple patterns (but I have never seen this feature used) and
396now it doesn't anymore. Partial results used to be returned in the same
397way as successful results. This last feature violated the idea that all
398functions should return <tt><b>nil</b></tt> on error. Thus it was changed
399too.
400</p>
401
402<!-- send +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
403
404<p class="name" id="send">
405client:<b>send(</b>data [, i [, j]]<b>)</b>
406</p>
407
408<p class="description">
409Sends <tt>data</tt> through client object.
410</p>
411
412<p class="parameters">
413<tt>Data</tt> is the string to be sent. The optional arguments
414<tt>i</tt> and <tt>j</tt> work exactly like the standard
415<tt>string.sub</tt> Lua function to allow the selection of a
416substring to be sent.
417</p>
418
419<p class="return">
420If successful, the method returns the index of the last byte
421within <tt>[i, j]</tt> that has been sent. Notice that, if
422<tt>i</tt> is 1 or absent, this is effectively the total
423number of bytes sent. In case of error, the method returns
424<b><tt>nil</tt></b>, followed by an error message, followed
425by the index of the last byte within <tt>[i, j]</tt> that
426has been sent. You might want to try again from the byte
427following that. The error message can be '<tt>closed</tt>'
428in case the connection was closed before the transmission
429was completed or the string '<tt>timeout</tt>' in case
430there was a timeout during the operation.
431</p>
432
433<p class="note">
434Note: Output is <em>not</em> buffered. For small strings,
435it is always better to concatenate them in Lua
436(with the '<tt>..</tt>' operator) and send the result in one call
437instead of calling the method several times.
438</p>
439
440<!-- setoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
441
442<p class="name" id="setoption">
443client:<b>setoption(</b>option [, value]<b>)</b><br>
444server:<b>setoption(</b>option [, value]<b>)</b>
445</p>
446
447<p class="description">
448Sets options for the TCP object. Options are only needed by low-level or
449time-critical applications. You should only modify an option if you
450are sure you need it.
451</p>
452
453<p class="parameters">
454<tt>Option</tt> is a string with the option name, and <tt>value</tt>
455depends on the option being set:</p>
456
457<ul>
458
459<li> '<tt>keepalive</tt>': Setting this option to <tt>true</tt> enables
460the periodic transmission of messages on a connected socket. Should the
461connected party fail to respond to these messages, the connection is
462considered broken and processes using the socket are notified;</li>
463
464<li> '<tt>linger</tt>': Controls the action taken when unsent data are
465queued on a socket and a close is performed. The value is a table with a
466boolean entry '<tt>on</tt>' and a numeric entry for the time interval
467'<tt>timeout</tt>' in seconds. If the '<tt>on</tt>' field is set to
468<tt>true</tt>, the system will block the process on the close attempt until
469it is able to transmit the data or until '<tt>timeout</tt>' has passed. If
470'<tt>on</tt>' is <tt>false</tt> and a close is issued, the system will
471process the close in a manner that allows the process to continue as
472quickly as possible. I do not advise you to set this to anything other than
473zero;</li>
474
475<li> '<tt>reuseaddr</tt>': Setting this option indicates that the rules
476used in validating addresses supplied in a call to
477<a href="#bind"><tt>bind</tt></a> should allow reuse of local addresses;</li>
478
479<li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt>
480disables the Nagle's algorithm for the connection;</li>
481
482<li> '<tt>tcp-keepidle</tt>': value in seconds for <tt>TCP_KEEPIDLE</tt> Linux only!!</li>
483
484<li> '<tt>tcp-keepcnt</tt>': value for <tt>TCP_KEEPCNT</tt> Linux only!!</li>
485
486<li> '<tt>tcp-keepintvl</tt>': value for <tt>TCP_KEEPINTVL</tt> Linux only!!</li>
487
488<li> '<tt>tcp-defer-accept</tt>': value for <tt>TCP_DEFER_ACCEPT</tt> Linux only!!</li>
489
490<li> '<tt>tcp-fastopen</tt>': value for <tt>TCP_FASTOPEN</tt> Linux only!!</li>
491
492<li> '<tt>tcp-fastopen-connect</tt>': value for <tt>TCP_FASTOPEN_CONNECT</tt> Linux only!!</li>
493
494<li> '<tt>ipv6-v6only</tt>':
495Setting this option to <tt>true</tt> restricts an <tt>inet6</tt> socket to
496sending and receiving only IPv6 packets.</li>
497</ul>
498
499<p class="return">
500The method returns 1 in case of success, or <b><tt>nil</tt></b>
501followed by an error message otherwise.
502</p>
503
504<p class="note">
505Note: The descriptions above come from the man pages.
506</p>
507
508<!-- setstats +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
509
510<p class="name" id="setstats">
511master:<b>setstats(</b>received, sent, age<b>)</b><br>
512client:<b>setstats(</b>received, sent, age<b>)</b><br>
513server:<b>setstats(</b>received, sent, age<b>)</b><br>
514</p>
515
516<p class="description">
517Resets accounting information on the socket, useful for throttling
518of bandwidth.
519</p>
520
521<p class="parameters">
522<tt>Received</tt> is a number with the new number of bytes received.
523<tt>Sent</tt> is a number with the new number of bytes sent.
524<tt>Age</tt> is the new age in seconds.
525</p>
526
527<p class="return">
528The method returns 1 in case of success and <tt><b>nil</b></tt> otherwise.
529</p>
530
531<!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
532
533<p class="name" id="settimeout">
534master:<b>settimeout(</b>value [, mode]<b>)</b><br>
535client:<b>settimeout(</b>value [, mode]<b>)</b><br>
536server:<b>settimeout(</b>value [, mode]<b>)</b>
537</p>
538
539<p class="description">
540Changes the timeout values for the object. By default,
541all I/O operations are blocking. That is, any call to the methods
542<a href="#send"><tt>send</tt></a>,
543<a href="#receive"><tt>receive</tt></a>, and
544<a href="#accept"><tt>accept</tt></a>
545will block indefinitely, until the operation completes. The
546<tt>settimeout</tt> method defines a limit on the amount of time the
547I/O methods can block. When a timeout is set and the specified amount of
548time has elapsed, the affected methods give up and fail with an error code.
549</p>
550
551<p class="parameters">
552The amount of time to wait is specified as the
553<tt>value</tt> parameter, in seconds. There are two timeout modes and
554both can be used together for fine tuning:
555</p>
556
557<ul>
558<li> '<tt>b</tt>': <em>block</em> timeout. Specifies the upper limit on
559the amount of time LuaSocket can be blocked by the operating system
560while waiting for completion of any single I/O operation. This is the
561default mode;</li>
562
563<li> '<tt>t</tt>': <em>total</em> timeout. Specifies the upper limit on
564the amount of time LuaSocket can block a Lua script before returning from
565a call.</li>
566</ul>
567
568<p class="parameters">
569The <b><tt>nil</tt></b> timeout <tt>value</tt> allows operations to block
570indefinitely. Negative timeout values have the same effect.
571</p>
572
573<p class="note">
574Note: although timeout values have millisecond precision in LuaSocket,
575large blocks can cause I/O functions not to respect timeout values due
576to the time the library takes to transfer blocks to and from the OS
577and to and from the Lua interpreter. Also, function that accept host names
578and perform automatic name resolution might be blocked by the resolver for
579longer than the specified timeout value.
580</p>
581
582<p class="note">
583Note: The old <tt>timeout</tt> method is deprecated. The name has been
584changed for sake of uniformity, since all other method names already
585contained verbs making their imperative nature obvious.
586</p>
587
588<!-- shutdown +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
589
590<p class="name" id="shutdown">
591client:<b>shutdown(</b>mode<b>)</b><br>
592</p>
593
594<p class="description">
595Shuts down part of a full-duplex connection.
596</p>
597
598<p class="parameters">
599Mode tells which way of the connection should be shut down and can
600take the value:
601<ul>
602<li>"<tt>both</tt>": disallow further sends and receives on the object.
603This is the default mode;</li>
604<li>"<tt>send</tt>": disallow further sends on the object;</li>
605<li>"<tt>receive</tt>": disallow further receives on the object.</li>
606</ul>
607</p>
608
609<p class="return">
610This function returns 1.
611</p>
612
613<!-- setfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
614
615<p class="name" id="setfd">
616master:<b>setfd(</b>fd<b>)</b><br>
617client:<b>setfd(</b>fd<b>)</b><br>
618server:<b>setfd(</b>fd<b>)</b>
619</p>
620
621<p class="description">
622Sets the underling socket descriptor or handle associated to the object. The current one
623is simply replaced, not closed, and no other change to the object state is made.
624To set it as invalid use <a href="socket.html#socketinvalid"><tt>_SOCKETINVALID</tt></a>.
625</p>
626
627<p class="return">
628No return value.
629</p>
630
631<p class="note">
632Note: <b>This is an internal method. Unlikely to be
633portable. Use at your own risk. </b>
634</p>
635
636<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
637
638<p class="name" id="socket.tcp">
639socket.<b>tcp()</b>
640</p>
641
642<p class="description">
643Creates and returns an TCP master object. A master object can
644be transformed into a server object with the method
645<a href="#listen"><tt>listen</tt></a> (after a call to <a
646href="#bind"><tt>bind</tt></a>) or into a client object with
647the method <a href="#connect"><tt>connect</tt></a>. The only other
648method supported by a master object is the
649<a href="#close"><tt>close</tt></a> method.</p>
650
651<p class="return">
652In case of success, a new master object is returned. In case of error,
653<b><tt>nil</tt></b> is returned, followed by an error message.
654</p>
655
656<p class="note">
657Note: The choice between IPv4 and IPv6 happens during a call to
658<a href="#bind"><tt>bind</tt></a> or <a
659href="#bind"><tt>connect</tt></a>, depending on the address
660family obtained from the resolver.
661</p>
662
663<p class="note">
664Note: Before the choice between IPv4 and IPv6 happens,
665the internal socket object is invalid and therefore <a
666href="#setoption"><tt>setoption</tt></a> will fail.
667</p>
668
669<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
670
671<p class="name" id="socket.tcp4">
672socket.<b>tcp4()</b>
673</p>
674
675<p class="description">
676Creates and returns an IPv4 TCP master object. A master object can
677be transformed into a server object with the method
678<a href="#listen"><tt>listen</tt></a> (after a call to <a
679href="#bind"><tt>bind</tt></a>) or into a client object with
680the method <a href="#connect"><tt>connect</tt></a>. The only other
681method supported by a master object is the
682<a href="#close"><tt>close</tt></a> method.</p>
683
684<p class="return">
685In case of success, a new master object is returned. In case of error,
686<b><tt>nil</tt></b> is returned, followed by an error message.
687</p>
688
689<!-- socket.tcp6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
690
691<p class="name" id="socket.tcp6">
692socket.<b>tcp6()</b>
693</p>
694
695<p class="description">
696Creates and returns an IPv6 TCP master object. A master object can
697be transformed into a server object with the method
698<a href="#listen"><tt>listen</tt></a> (after a call to <a
699href="#bind"><tt>bind</tt></a>) or into a client object with
700the method <a href="#connect"><tt>connect</tt></a>. The only other
701method supported by a master object is the
702<a href="#close"><tt>close</tt></a> method.</p>
703
704<p class="return">
705In case of success, a new master object is returned. In case of error,
706<b><tt>nil</tt></b> is returned, followed by an error message.
707</p>
708
709<p class="note">
710Note: The TCP object returned will have the option
711"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
712</p>
713
714
715
716<!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
717
718<div class="footer">
719<hr>
720<center>
721<p class="bar">
722<a href="index.html">home</a> &middot;
723<a href="index.html#down">download</a> &middot;
724<a href="installation.html">installation</a> &middot;
725<a href="introduction.html">introduction</a> &middot;
726<a href="reference.html">reference</a>
727</p>
728<p>
729<small>
730Last modified by Diego Nehab on <br>
731Thu Apr 20 00:25:57 EDT 2006
732</small>
733</p>
734</center>
735</div>
736
737</body>
738</html>