# HG changeset patch # User Richard M. Stallman # Date 1123789595 0 # Node ID 989a5fc8da03a1d9ed81c6da2b6cc2684046e41d # Parent cf610b7973575ee21f9c7912194464d62d60b272 (Misc Network, Network Feature Testing) (Network Options, Make Network): New nodes split out of Low-Level Network. diff -r cf610b797357 -r 989a5fc8da03 lispref/processes.texi --- a/lispref/processes.texi Thu Aug 11 14:01:38 2005 +0000 +++ b/lispref/processes.texi Thu Aug 11 19:46:35 2005 +0000 @@ -52,6 +52,7 @@ * Datagrams:: UDP network connections. * Low-Level Network:: Lower-level but more general function to create connections and servers. +* Misc Network:: Additional relevant functions for network connections. * Byte Packing:: Using bindat to pack and unpack binary data. @end menu @@ -1716,6 +1717,20 @@ @node Low-Level Network @section Low-Level Network Access + You can also create network connections by operating at a lower +level that that of @code{open-network-stream}, using +@code{make-network-process}. + +@menu +* Make Network:: Using @code{make-network-process}. +* Network Options:: Further control over network connections. +* Network Feature Testing:: Determining which network features work on + the machine you are using. +@end menu + +@node Make Network +@subsection @code{make-network-process} + The basic function for creating network connections and network servers is @code{make-network-process}. It can do either of those jobs, depending on the arguments you give it. @@ -1852,14 +1867,21 @@ Initialize the process plist to @var{plist}. @end table -The following network options can be specified for the network -process. Except for @code{:reuseaddr}, you can set or modify these -options later using @code{set-network-process-option}. - -For a server process, the options specified with +The original argument list, modified with the actual connection +information, is available via the @code{process-contact} function. +@end defun + +@node Network Options +@subsection Network Options + + The following network options can be specified when you create a +network process. Except for @code{:reuseaddr}, you can also set or +modify these options later, using @code{set-network-process-option}. + + For a server process, the options specified with @code{make-network-process} are not inherited by the client connections, so you will need to set the necessary options for each -child connection as they are created. +child connection as it is created. @table @asis @item :bindtodevice @var{device-name} @@ -1914,13 +1936,8 @@ may be a period of time after the last use of that port (by any process on the host), where it is not possible to make a new server on that port. - @end table -The original argument list, modified with the actual connection -information, is available via the @code{process-contact} function. -@end defun - @defun set-network-process-option process option value This function sets or modifies a network option for network process @var{process}. See @code{make-network-process} for details of options @@ -1930,6 +1947,64 @@ @code{process-contact} function. @end defun +@node Network Feature Testing +@subsection Testing Availability of Network Features + + To test for the availability of a given network feature, use +@code{featurep} like this: + +@example +(featurep 'make-network-process '(@var{keyword} @var{value})) +@end example + +@noindent +The result of the first form is @code{t} if it works to specify +@var{keyword} with value @var{value} in @code{make-network-process}. +The result of the second form is @code{t} if @var{keyword} is +supported by @code{make-network-process}. Here are some of the +@var{keyword}---@var{value} pairs you can test in +this way. + +@table @code +@item (:nowait t) +Non-@code{nil} if non-blocking connect is supported. +@item (:type datagram) +Non-@code{nil} if datagrams are supported. +@item (:family local) +Non-@code{nil} if local (aka ``UNIX domain'') sockets are supported. +@item (:service t) +Non-@code{nil} if the system can select the port for a server. +@end table + + To test for the availability of a given network option, use +@code{featurep} like this: + +@example +(featurep 'make-network-process '@var{keyword}) +@end example + +@noindent +Here are some of the options you can test in this way. + +@table @code +@item :bindtodevice +@itemx :broadcast +@itemx :dontroute +@itemx :keepalive +@itemx :linger +@itemx :oobinline +@itemx :priority +@itemx :reuseaddr +That particular network option is supported by +@code{make-network-process} and @code{set-network-process-option}. +@end table + +@node Misc Network +@section Misc Network Facilities + + These additional functions are useful for creating and operating +on network connections. + @defun network-interface-list This function returns a list describing the network interfaces of the machine you are using. The value is an alist whose @@ -1969,55 +2044,6 @@ the port number. @end defun - To test for the availability of a given network feature, use -@code{featurep} like this: - -@example -(featurep 'make-network-process '(@var{keyword} @var{value})) -@end example - -@noindent -The result of the first form is @code{t} if it works to specify -@var{keyword} with value @var{value} in @code{make-network-process}. -The result of the second form is @code{t} if @var{keyword} is -supported by @code{make-network-process}. Here are some of the -@var{keyword}---@var{value} pairs you can test in -this way. - -@table @code -@item (:nowait t) -Non-@code{nil} if non-blocking connect is supported. -@item (:type datagram) -Non-@code{nil} if datagrams are supported. -@item (:family local) -Non-@code{nil} if local (aka ``UNIX domain'') sockets are supported. -@item (:service t) -Non-@code{nil} if the system can select the port for a server. -@end table - - To test for the availability of a given network option, use -@code{featurep} like this: - -@example -(featurep 'make-network-process '@var{keyword}) -@end example - -Here are some of the option @var{keyword}s you can test in -this way. - -@table @code -@item :bindtodevice -@itemx :broadcast -@itemx :dontroute -@itemx :keepalive -@itemx :linger -@itemx :oobinline -@itemx :priority -@itemx :reuseaddr -That particular network option is supported by -@code{make-network-process} and @code{set-network-process-option}. -@end table - @node Byte Packing @section Packing and Unpacking Byte Arrays