<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of class attributes" rel=Appendix href="index_attributes.html"> <link title="Index of class methods" rel=Appendix href="index_methods.html"> <link title="Index of classes" rel=Appendix href="index_classes.html"> <link title="Index of class types" rel=Appendix href="index_class_types.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Uq_gtk" rel="Chapter" href="Uq_gtk.html"> <link title="Equeue" rel="Chapter" href="Equeue.html"> <link title="Unixqueue" rel="Chapter" href="Unixqueue.html"> <link title="Uq_engines" rel="Chapter" href="Uq_engines.html"> <link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html"> <link title="Unixqueue_mt" rel="Chapter" href="Unixqueue_mt.html"> <link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html"> <link title="Uq_ssl" rel="Chapter" href="Uq_ssl.html"> <link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html"> <link title="Netcgi_common" rel="Chapter" href="Netcgi_common.html"> <link title="Netcgi" rel="Chapter" href="Netcgi.html"> <link title="Netcgi_ajp" rel="Chapter" href="Netcgi_ajp.html"> <link title="Netcgi_scgi" rel="Chapter" href="Netcgi_scgi.html"> <link title="Netcgi_cgi" rel="Chapter" href="Netcgi_cgi.html"> <link title="Netcgi_fcgi" rel="Chapter" href="Netcgi_fcgi.html"> <link title="Netcgi_dbi" rel="Chapter" href="Netcgi_dbi.html"> <link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html"> <link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html"> <link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html"> <link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html"> <link title="Http_client" rel="Chapter" href="Http_client.html"> <link title="Telnet_client" rel="Chapter" href="Telnet_client.html"> <link title="Ftp_data_endpoint" rel="Chapter" href="Ftp_data_endpoint.html"> <link title="Ftp_client" rel="Chapter" href="Ftp_client.html"> <link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html"> <link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html"> <link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html"> <link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html"> <link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html"> <link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html"> <link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html"> <link title="Netplex_types" rel="Chapter" href="Netplex_types.html"> <link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html"> <link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html"> <link title="Netplex_log" rel="Chapter" href="Netplex_log.html"> <link title="Netplex_controller" rel="Chapter" href="Netplex_controller.html"> <link title="Netplex_container" rel="Chapter" href="Netplex_container.html"> <link title="Netplex_sockserv" rel="Chapter" href="Netplex_sockserv.html"> <link title="Netplex_workload" rel="Chapter" href="Netplex_workload.html"> <link title="Netplex_main" rel="Chapter" href="Netplex_main.html"> <link title="Netplex_config" rel="Chapter" href="Netplex_config.html"> <link title="Netplex_kit" rel="Chapter" href="Netplex_kit.html"> <link title="Rpc_netplex" rel="Chapter" href="Rpc_netplex.html"> <link title="Netplex_cenv" rel="Chapter" href="Netplex_cenv.html"> <link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html"> <link title="Netshm" rel="Chapter" href="Netshm.html"> <link title="Netshm_data" rel="Chapter" href="Netshm_data.html"> <link title="Netshm_hashtbl" rel="Chapter" href="Netshm_hashtbl.html"> <link title="Netshm_array" rel="Chapter" href="Netshm_array.html"> <link title="Netshm_intro" rel="Chapter" href="Netshm_intro.html"> <link title="Netconversion" rel="Chapter" href="Netconversion.html"> <link title="Netchannels" rel="Chapter" href="Netchannels.html"> <link title="Netstream" rel="Chapter" href="Netstream.html"> <link title="Mimestring" rel="Chapter" href="Mimestring.html"> <link title="Netmime" rel="Chapter" href="Netmime.html"> <link title="Netsendmail" rel="Chapter" href="Netsendmail.html"> <link title="Neturl" rel="Chapter" href="Neturl.html"> <link title="Netaddress" rel="Chapter" href="Netaddress.html"> <link title="Netbuffer" rel="Chapter" href="Netbuffer.html"> <link title="Netdate" rel="Chapter" href="Netdate.html"> <link title="Netencoding" rel="Chapter" href="Netencoding.html"> <link title="Netulex" rel="Chapter" href="Netulex.html"> <link title="Netaccel" rel="Chapter" href="Netaccel.html"> <link title="Netaccel_link" rel="Chapter" href="Netaccel_link.html"> <link title="Nethtml" rel="Chapter" href="Nethtml.html"> <link title="Netstring_str" rel="Chapter" href="Netstring_str.html"> <link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html"> <link title="Netstring_mt" rel="Chapter" href="Netstring_mt.html"> <link title="Netmappings" rel="Chapter" href="Netmappings.html"> <link title="Netaux" rel="Chapter" href="Netaux.html"> <link title="Nethttp" rel="Chapter" href="Nethttp.html"> <link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html"> <link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html"> <link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html"> <link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html"> <link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html"> <link title="Netsys" rel="Chapter" href="Netsys.html"> <link title="Netpop" rel="Chapter" href="Netpop.html"> <link title="Rpc_auth_dh" rel="Chapter" href="Rpc_auth_dh.html"> <link title="Rpc_key_service" rel="Chapter" href="Rpc_key_service.html"> <link title="Rpc_time" rel="Chapter" href="Rpc_time.html"> <link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html"> <link title="Rtypes" rel="Chapter" href="Rtypes.html"> <link title="Xdr" rel="Chapter" href="Xdr.html"> <link title="Rpc" rel="Chapter" href="Rpc.html"> <link title="Rpc_program" rel="Chapter" href="Rpc_program.html"> <link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html"> <link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html"> <link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html"> <link title="Rpc_client" rel="Chapter" href="Rpc_client.html"> <link title="Rpc_simple_client" rel="Chapter" href="Rpc_simple_client.html"> <link title="Rpc_portmapper_clnt" rel="Chapter" href="Rpc_portmapper_clnt.html"> <link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html"> <link title="Rpc_server" rel="Chapter" href="Rpc_server.html"> <link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html"> <link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html"> <link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html"> <link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html"> <link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html"> <link title="Shell_sys" rel="Chapter" href="Shell_sys.html"> <link title="Shell" rel="Chapter" href="Shell.html"> <link title="Shell_uq" rel="Chapter" href="Shell_uq.html"> <link title="Shell_mt" rel="Chapter" href="Shell_mt.html"> <link title="Shell_intro" rel="Chapter" href="Shell_intro.html"> <link title="Netsmtp" rel="Chapter" href="Netsmtp.html"><title>Ocamlnet 2 Reference Manual</title> </head> <body> <center><h1>Ocamlnet 2 Reference Manual</h1></center> Ocamlnet consists of a number of libraries: <p> <ul> <li><code class="code">netstring</code> is about processing strings that occur in network context</li> <li><code class="code">netcgi1</code> and <code class="code">netcgi2</code> focus on portable web applications</li> <li><code class="code">nethttpd</code> is a web server component (HTTP server implementation)</li> <li><code class="code">netplex</code> is a generic server framework</li> <li><code class="code">rpc</code> implements OncRPC</li> <li><code class="code">netclient</code> implements clients for HTTP, FTP, and Telnet </li> <li><code class="code">equeue</code> is an event queue used for many protocol implementations</li> <li><code class="code">shell</code> is about calling external commands</li> <li><code class="code">netshm</code> provides shared memory for IPC purposes</li> <li><code class="code">netsys</code> contains bindings for system functions</li> <li><code class="code">smtp</code> and <code class="code">pop</code> are two further client implementations</li> </ul> A number of ideas and concepts are used throughout the libraries: <p> <ul> <li><a href="Netchannels.html"><code class="code">Netchannels</code></a> are a way to abstract sequential I/O channels</li> <li>The event queues provided by <a href="Equeue.html"><code class="code">Equeue</code></a> and <a href="Unixqueue.html"><code class="code">Unixqueue</code></a> make asynchronous protocol interpreters possible</li> </ul> <a name="netstring"></a> <h2>The <code class="code">netstring</code> library</h2> <p> <code class="code">netstring</code> focuses on string processing functions. <p> <br> <table class="indextable"> <tr><td><a href="Netconversion.html">Netconversion</a></td><td><div class="info"> Conversion between character encodings </div> </td></tr> <tr><td><a href="Netchannels.html">Netchannels</a></td><td><div class="info"> Object-oriented I/O: Basic types and classes </div> </td></tr> <tr><td><a href="Netstream.html">Netstream</a></td><td><div class="info"> A netstream is an input channel that is read block by block. </div> </td></tr> <tr><td><a href="Mimestring.html">Mimestring</a></td><td><div class="info"> Low-level functions to parse and print mail and MIME messages </div> </td></tr> <tr><td><a href="Netmime.html">Netmime</a></td><td><div class="info"> Netmime contains high-level classes and functions to process mail and MIME messages. </div> </td></tr> <tr><td><a href="Netsendmail.html">Netsendmail</a></td><td><div class="info"> Functions to compose and send electronic mails </div> </td></tr> <tr><td><a href="Neturl.html">Neturl</a></td><td><div class="info"> Uniform Resource Locators (URLs) </div> </td></tr> <tr><td><a href="Netaddress.html">Netaddress</a></td><td><div class="info"> Parsing of mail addresses </div> </td></tr> <tr><td><a href="Netbuffer.html">Netbuffer</a></td><td><div class="info"> A Netbuffer.t is a buffer that can grow and shrink dynamically. </div> </td></tr> <tr><td><a href="Netdate.html">Netdate</a></td><td><div class="info"> Support for common date/time parsing and formatting. </div> </td></tr> <tr><td><a href="Netencoding.html">Netencoding</a></td><td><div class="info"> Base64, Quoted Printable, URL encoding, HTML escaping </div> </td></tr> <tr><td><a href="Netulex.html">Netulex</a></td><td><div class="info"> Support module for Alain Frisch's <code class="code">ulex</code> lexer generator </div> </td></tr> <tr><td><a href="Netaccel.html">Netaccel</a></td><td><div class="info"> Accelerators for bytecode </div> </td></tr> <tr><td><a href="Netaccel_link.html">Netaccel_link</a></td><td><div class="info"> Enables accelerator module <code class="code">Netaccel</code> </div> </td></tr> <tr><td><a href="Nethtml.html">Nethtml</a></td><td><div class="info"> Parsing of HTML </div> </td></tr> <tr><td><a href="Nethttp.html">Nethttp</a></td><td><div class="info"> Basic definitions for the HTTP protocol </div> </td></tr> <tr><td><a href="Netstring_str.html">Netstring_str</a></td><td><div class="info"> Wrapper for regexps with <code class="code">Str</code> syntax </div> </td></tr> <tr><td><a href="Netstring_pcre.html">Netstring_pcre</a></td><td><div class="info"> Wrapper for regexps with PCRE syntax </div> </td></tr> <tr><td><a href="Netstring_mt.html">Netstring_mt</a></td><td><div class="info"> Initialisation code for multi-threading </div> </td></tr> <tr><td><a href="Netmappings.html">Netmappings</a></td><td><div class="info"> Internal access to the character conversion database </div> </td></tr> <tr><td><a href="Netaux.html">Netaux</a></td><td><div class="info"> Internal auxiliary functions </div> </td></tr> </table> <p> <a name="netstring_intro"></a> <h3>Guides</h3> <p> <ul> <li><a href="Netchannels_tut.html"><code class="code">Netchannels_tut</code></a>: The <code class="code">Netchannels</code> tutorial - <b>strongly recommended read!</b></li> <li><a href="Netmime_tut.html"><code class="code">Netmime_tut</code></a>: The <code class="code">Netmime</code> tutorial</li> <li><a href="Netsendmail_tut.html"><code class="code">Netsendmail_tut</code></a>: The <code class="code">Netsendmail</code> tutorial</li> <li><a href="Netulex_tut.html"><code class="code">Netulex_tut</code></a>: The <code class="code">Netulex</code> tutorial</li> <li><a href="Neturl_tut.html"><code class="code">Neturl_tut</code></a>: The <code class="code">Neturl</code> tutorial</li> </ul> <a name="netcgi1"></a> <h2>The <code class="code">netcgi1</code> library</h2> <p> The <code class="code">netcgi1</code> library is the old library for writing portable web applications, formerly known as <code class="code">cgi</code> (this name is now an alias for <code class="code">netcgi1</code>). Its features are frozen. A description of its interfaces can be found <a href="netcgi1/index.html"> here</a>. <p> Note that it is not possible to use <code class="code">netcgi1</code> and <code class="code">netcgi2</code> at the same time. <p> <a name="netcgi2"></a> <h2>The <code class="code">netcgi2</code> library</h2> <p> This is the revised library for Web applications, now called <code class="code">netcgi2</code>. <p> <br> <table class="indextable"> <tr><td><a href="Netcgi.html">Netcgi</a></td><td><div class="info"> Common data-structures for CGI-like connectors. </div> </td></tr> <tr><td><a href="Netcgi_common.html">Netcgi_common</a></td><td><div class="info"> Functions to develop new connectors. </div> </td></tr> <tr><td><a href="Netcgi_cgi.html">Netcgi_cgi</a></td><td><div class="info"> Classical CGI connector. </div> </td></tr> <tr><td><a href="Netcgi_fcgi.html">Netcgi_fcgi</a></td><td><div class="info"> FastCGI connector. </div> </td></tr> <tr><td><a href="Netcgi_ajp.html">Netcgi_ajp</a></td><td><div class="info"> Apache JServ Protocol (AJP) 1.3 connector. </div> </td></tr> <tr><td><a href="Netcgi_scgi.html">Netcgi_scgi</a></td><td><div class="info"> SCGI connector. </div> </td></tr> <tr><td><a href="Netcgi_test.html">Netcgi_test</a></td><td><div class="info"> Connector for testing your code. </div> </td></tr> <tr><td><a href="Netcgi_dbi.html">Netcgi_dbi</a></td><td><div class="info"> Pools of connections for the ocamldbi generic database interface. </div> </td></tr> <tr><td><a href="Netcgi1_compat.html">Netcgi1_compat</a></td><td><div class="info"> <font color="#CCCCCC">Compatibility module with the previous version of Netcgi. </font></div> </td></tr> </table> <p> Note that it is not possible to use <code class="code">netcgi1</code> and <code class="code">netcgi2</code> at the same time. <p> <a name="netcgi_intro"></a> <h3>Guides</h3> <p> <ul> <li><a href="Netcgi_porting.html"><code class="code">Netcgi_porting</code></a>: Porting <code class="code">netcgi1</code> programs to <code class="code">netcgi2</code></li> </ul> <a name="nethttpd"></a> <h2>The <code class="code">nethttpd</code> library</h2> <p> The <code class="code">nethttpd</code> library is a Web server component written in O'Caml. For a full web server, you'll also need <code class="code">netplex</code>. <p> <br> <table class="indextable"> <tr><td><a href="Nethttpd_types.html">Nethttpd_types</a></td><td><div class="info"> Type definitions for the HTTP daemon </div> </td></tr> <tr><td><a href="Nethttpd_kernel.html">Nethttpd_kernel</a></td><td><div class="info"> The protocol kernel of the HTTP daemon </div> </td></tr> <tr><td><a href="Nethttpd_reactor.html">Nethttpd_reactor</a></td><td><div class="info"> The reactive encapsulation of the HTTP daemon </div> </td></tr> <tr><td><a href="Nethttpd_engine.html">Nethttpd_engine</a></td><td><div class="info"> The event-based encapsulation of the HTTP daemon </div> </td></tr> <tr><td><a href="Nethttpd_services.html">Nethttpd_services</a></td><td><div class="info"> Service Providers for HTTP daemon </div> </td></tr> <tr><td><a href="Nethttpd_plex.html">Nethttpd_plex</a></td><td><div class="info"> Netplex support </div> </td></tr> </table> <p> <a name="nethttpd_intro"></a> <h3>Guides</h3> <p> <ul> <li><a href="Nethttpd_intro.html"><code class="code">Nethttpd_intro</code></a>: Overview over the HTTP daemon</li> </ul> <a name="netplex"></a> <h2>The <code class="code">netplex</code> library</h2> <p> The <code class="code">netplex</code> library is a protocol-independent server framework. Especially, it can be used in conjunction with <code class="code">nethttpd</code> to build web servers, and with <code class="code">rpc</code> to build RPC servers. <p> <br> <table class="indextable"> <tr><td><a href="Netplex_types.html">Netplex_types</a></td><td><div class="info"> Types for <code class="code">Netplex</code> </div> </td></tr> <tr><td><a href="Netplex_config.html">Netplex_config</a></td><td><div class="info"> Read the configuration file </div> </td></tr> <tr><td><a href="Netplex_controller.html">Netplex_controller</a></td><td><div class="info"> Controller </div> </td></tr> <tr><td><a href="Netplex_container.html">Netplex_container</a></td><td><div class="info"> Containers </div> </td></tr> <tr><td><a href="Netplex_sockserv.html">Netplex_sockserv</a></td><td><div class="info"> Socket service creation </div> </td></tr> <tr><td><a href="Netplex_workload.html">Netplex_workload</a></td><td><div class="info"> Workload management </div> </td></tr> <tr><td><a href="Netplex_kit.html">Netplex_kit</a></td><td><div class="info"> Netplex toolkit </div> </td></tr> <tr><td><a href="Netplex_log.html">Netplex_log</a></td><td><div class="info"> Loggers </div> </td></tr> <tr><td><a href="Netplex_main.html">Netplex_main</a></td><td><div class="info"> Main program for Netplex servers </div> </td></tr> <tr><td><a href="Netplex_mp.html">Netplex_mp</a></td><td><div class="info"> Multi-processing provider </div> </td></tr> <tr><td><a href="Netplex_mt.html">Netplex_mt</a></td><td><div class="info"> Multi-threading provider </div> </td></tr> <tr><td><a href="Rpc_netplex.html">Rpc_netplex</a></td><td><div class="info"> Netplex support for RPC servers (TCP only) </div> </td></tr> </table> <p> <a name="nethttpd_intro"></a> <h3>Guides</h3> <p> <ul> <li><a href="Netplex_intro.html"><code class="code">Netplex_intro</code></a>: Introduction to <code class="code">Netplex</code></li> </ul> <a name="equeue"></a> <h2>The <code class="code">rpc</code> library</h2> <p> This library implements OncRPC (alias SunRPC). <p> <br> <table class="indextable"> <tr><td><a href="Rtypes.html">Rtypes</a></td><td><div class="info"> Basic types </div> </td></tr> <tr><td><a href="Xdr.html">Xdr</a></td><td><div class="info"> External Data Representation </div> </td></tr> <tr><td><a href="Rpc.html">Rpc</a></td><td><div class="info"> Common types and exceptions </div> </td></tr> <tr><td><a href="Rpc_program.html">Rpc_program</a></td><td><div class="info"> RPC programs </div> </td></tr> <tr><td><a href="Rpc_client.html">Rpc_client</a></td><td><div class="info"> RPC clients </div> </td></tr> <tr><td><a href="Rpc_simple_client.html">Rpc_simple_client</a></td><td><div class="info"> Synchronous API for RPC clients </div> </td></tr> <tr><td><a href="Rpc_server.html">Rpc_server</a></td><td><div class="info"> RPC servers </div> </td></tr> <tr><td><a href="Rpc_auth_sys.html">Rpc_auth_sys</a></td><td><div class="info"> Authentication module AUTH_SYS </div> </td></tr> <tr><td><a href="Rpc_portmapper.html">Rpc_portmapper</a></td><td><div class="info"> Portmapper version 2 </div> </td></tr> <tr><td><a href="Rpc_portmapper_aux.html">Rpc_portmapper_aux</a></td><td></td></tr> <tr><td><a href="Rpc_portmapper_clnt.html">Rpc_portmapper_clnt</a></td><td></td></tr> <tr><td><a href="Rpc_transport.html">Rpc_transport</a></td><td><div class="info"> Low-level RPC transporters </div> </td></tr> <tr><td><a href="Rpc_packer.html">Rpc_packer</a></td><td></td></tr> </table> <p> <a name="rpc_intro"></a> <h3>Guides</h3> <p> <ul> <li><a href="Rpc_intro.html"><code class="code">Rpc_intro</code></a>: Introduction</li> <li><a href="Rpc_mapping_ref.html"><code class="code">Rpc_mapping_ref</code></a>: RPC Language Mapping Reference</li> </ul> <a name="rpc_local"></a> <h3>The <code class="code">rpc-auth-local</code> extension</h3> <p> Authentication for local socket connections. <p> <br> <table class="indextable"> <tr><td><a href="Rpc_auth_local.html">Rpc_auth_local</a></td><td><div class="info"> Return the authentication method <code class="code">AUTH_LOCAL</code>. </div> </td></tr> </table> <p> <a name="rpc_authdh"></a> <h3>The <code class="code">rpc-auth-dh</code> extension</h3> <p> This is Diffie-Hellman authentication for OncRPC (also known as "Secure RPC"). <p> <br> <table class="indextable"> <tr><td><a href="Rpc_auth_dh.html">Rpc_auth_dh</a></td><td><div class="info"> Diffie-Hellman authentication (AUTH_DH alias AUTH_DES) </div> </td></tr> <tr><td><a href="Rpc_key_service.html">Rpc_key_service</a></td><td><div class="info"> Contact the keyserv daemon to encrypt/decrypt data with the common key. </div> </td></tr> <tr><td><a href="Rpc_time.html">Rpc_time</a></td><td><div class="info"> Get the time of the server (using the RFC 868 netdate protocol) </div> </td></tr> </table> <p> <a name="rpc_xti"></a> <h3>The <code class="code">rpc-xti</code> extension</h3> <p> System V provides a network API called XTI in addition to the socket API. This library allows it to connect to RPC services that can only be reached over a local XTI connection ("cots" connection). <p> <br> <table class="indextable"> <tr><td><a href="Rpc_xti_client.html">Rpc_xti_client</a></td><td><div class="info"> Minimal support for TI-RPC over the XTI API </div> </td></tr> </table> <p> <a name="rpc_ssl"></a> <h3>The <code class="code">rpc_ssl</code> extension</h3> <p> This library allows you to tunnel RPC through SSL/TLS. <p> <br> <table class="indextable"> <tr><td><a href="Rpc_ssl.html">Rpc_ssl</a></td><td><div class="info"> Securing RPC by SSL </div> </td></tr> </table> <p> <a name="netclient"></a> <h2>The <code class="code">netclient</code> library</h2> <p> This library includes clients for HTTP, Telnet, and (incomplete) FTP. <p> <br> <table class="indextable"> <tr><td><a href="Http_client.html">Http_client</a></td><td><div class="info"> HTTP 1.1 client </div> </td></tr> <tr><td><a href="Telnet_client.html">Telnet_client</a></td><td><div class="info"> Telnet client </div> </td></tr> <tr><td><a href="Ftp_client.html">Ftp_client</a></td><td><div class="info"> FTP client </div> </td></tr> <tr><td><a href="Ftp_data_endpoint.html">Ftp_data_endpoint</a></td><td><div class="info"> Senders and receivers for the FTP data connection </div> </td></tr> </table> <p> <a name="equeue"></a> <h2>The <code class="code">equeue</code> library</h2> <p> <code class="code">equeue</code> is a fundamental library for event queues. It is mainly used by a number of other libraries of Ocamlnet to parallelize network code (so-called multiplexing). <p> <br> <table class="indextable"> <tr><td><a href="Equeue.html">Equeue</a></td><td><div class="info"> <code class="code">Equeue</code> implements generic event queues. </div> </td></tr> <tr><td><a href="Unixqueue.html">Unixqueue</a></td><td><div class="info"> This module generalizes the <code class="code">Unix.select</code> function. </div> </td></tr> <tr><td><a href="Unixqueue_mt.html">Unixqueue_mt</a></td><td><div class="info"> This module initializes Unixqueue for multi-threaded programs. </div> </td></tr> <tr><td><a href="Uq_engines.html">Uq_engines</a></td><td><div class="info"> An <b>engine</b> performs a certain task in an autonomous way. </div> </td></tr> <tr><td><a href="Uq_socks5.html">Uq_socks5</a></td><td><div class="info"> This module implements a SOCKS version 5 client (see RFC 1928) for use with the <a href="Uq_engines.html#VALconnector"><code class="code">Uq_engines.connector</code></a>, <a href="Uq_engines.html#VALlistener"><code class="code">Uq_engines.listener</code></a>, and <a href="Uq_engines.html#VALdatagram_provider"><code class="code">Uq_engines.datagram_provider</code></a> engine factories. </div> </td></tr> </table> <p> <a name="equeue_intro"></a> <h3>Guides</h3> <p> <ul> <li><a href="Equeue_intro.html"><code class="code">Equeue_intro</code></a>: Introduction to programming with <code class="code">equeue</code></li> </ul> <a name="equeue_gtk"></a> <h3>The <code class="code">equeue-gtk1</code> and <code class="code">equeue-gtk2</code> extensions</h3> <p> Extensions for <code class="code">equeue</code> to integrate the event queue into user interfaces made with lablgtk and lablgtk2 <p> <br> <table class="indextable"> <tr><td><a href="Uq_gtk.html">Uq_gtk</a></td><td><div class="info"> Integration with lablgtk/lablgtk2 event systems </div> </td></tr> </table> <p> <a name="equeue_ssl"></a> <h3>The <code class="code">equeue-ssl</code> extension</h3> <p> Extensions for <code class="code">equeue</code> to support SSL <p> <br> <table class="indextable"> <tr><td><a href="Uq_ssl.html">Uq_ssl</a></td><td><div class="info"> Asynchronous SSL connections </div> </td></tr> </table> <p> <a name="equeue_tcl"></a> <h3>The <code class="code">equeue-tcl</code> extension</h3> <p> Extension for <code class="code">equeue</code> to integrate the event queue into user interfaces made with labltk <p> <br> <table class="indextable"> <tr><td><a href="Uq_tcl.html">Uq_tcl</a></td><td><div class="info"> Integration with the labltk event system </div> </td></tr> </table> <p> <a name="pop"></a> <h2>The <code class="code">pop</code> library</h2> <p> This is a simple POP 3 client. <p> <br> <table class="indextable"> <tr><td><a href="Netpop.html">Netpop</a></td><td><div class="info"> This is an interface for the Post Office Protocol - Version 3 (POP3) as specifed by RFC 1939. </div> </td></tr> </table> <p> <a name="smtp"></a> <h2>The <code class="code">smtp</code> library</h2> <p> This is a simple SMTP client. <p> <br> <table class="indextable"> <tr><td><a href="Netsmtp.html">Netsmtp</a></td><td><div class="info"> This is an interface for the Simple Mail Tranfer Protocol (SMTP) as specified by RFC 2821. </div> </td></tr> </table> <p> <a name="shell"></a> <h2>The <code class="code">shell</code> library</h2> <p> The <code class="code">shell</code> library allows you to start external commands. It is integrated into <code class="code">equeue</code>. <p> <br> <table class="indextable"> <tr><td><a href="Shell.html">Shell</a></td><td><div class="info"> Calls external programs, creates pipelines, etc. </div> </td></tr> <tr><td><a href="Shell_sys.html">Shell_sys</a></td><td><div class="info"> Calls external programs, creates pipelines, etc. </div> </td></tr> <tr><td><a href="Shell_uq.html">Shell_uq</a></td><td><div class="info"> Run shell commands within Unixqueues </div> </td></tr> <tr><td><a href="Shell_mt.html">Shell_mt</a></td><td><div class="info"> Multi-threading support </div> </td></tr> </table> <p> <a name="shell_intro"></a> <h3>Guides</h3> <p> <ul> <li><a href="Shell_intro.html"><code class="code">Shell_intro</code></a>: Motivation for <code class="code">shell</code></li> </ul> <a name="netshm"></a> <h2>The <code class="code">netshm</code> library</h2> <p> The <code class="code">netshm</code> library manages a shared memory object either as hash table or array. It is designed to be used in multi-processing program architectures. <p> <br> <table class="indextable"> <tr><td><a href="Netshm.html">Netshm</a></td><td><div class="info"> Shared memory for O'Caml programs using multi-processing </div> </td></tr> <tr><td><a href="Netshm_data.html">Netshm_data</a></td><td><div class="info"> Data representation for shared memory </div> </td></tr> <tr><td><a href="Netshm_hashtbl.html">Netshm_hashtbl</a></td><td><div class="info"> Hash tables in shared memory </div> </td></tr> <tr><td><a href="Netshm_array.html">Netshm_array</a></td><td><div class="info"> Arrays in shared memory </div> </td></tr> </table> <p> <a name="netshm_intro"></a> <h3>Guides</h3> <p> <ul> <li><a href="Netshm_intro.html"><code class="code">Netshm_intro</code></a>: Shared Memory for IPC</li> </ul> <a name="netsys"></a> <h2>The <code class="code">netsys</code> library</h2> <p> The <code class="code">netsys</code> library contains a number of low-level functions used by other Ocamlnet libraries. <p> <br> <table class="indextable"> <tr><td><a href="Netsys.html">Netsys</a></td><td><div class="info"> Some POSIX system calls missing in the <code class="code">Unix</code> module </div> </td></tr> </table> <p> <a name="2_Index"></a> <h2>Index</h2> <p> <a href="index_types.html">Index of types</a><br> <a href="index_exceptions.html">Index of exceptions</a><br> <a href="index_values.html">Index of values</a><br> <a href="index_attributes.html">Index of class attributes</a><br> <a href="index_methods.html">Index of class methods</a><br> <a href="index_classes.html">Index of classes</a><br> <a href="index_class_types.html">Index of class types</a><br> <a href="index_modules.html">Index of modules</a><br> <a href="index_module_types.html">Index of module types</a><br> <p> <a name="2_Authors"></a> <h2>Authors</h2> <p> The Ocamlnet libraries have been initially written by Gerd Stolpmann and Patrick Doane. <p> Contributions by <p> <ul> <li>Nicolas George: Netdate</li> <li>Eric Stokes: FastCGI support</li> <li>Pierre Habouzit: SMTP client</li> <li>Christophe Troestler: Revised version of <code class="code">netcgi</code></li> <li>Deokhwan Kim: Support for EUC-KR</li> </ul> Sponsorships by <p> <ul> <li>Baretta s.r.l: Nethttpd</li> <li>California State University: SSL support for RPC, Netplex</li> </ul> <br>