#include "include/layout.wml"

<set-var last-modified-author="prk">
<subject "GNU Classpath inetlib">

<box>
<boxtitle><a name="main">Classpath::inetlib</a></boxtitle>
<boxitem>
<en>

<p>
GNU inetlib is a library of clients for common internet protocols.
The following protocols are currently supported:
</p>

<ul>
<li>Hypertext Transfer Protocol (HTTP)</li>
<li>File Transfer Protocol (FTP)</li>
<li>Simple Mail Transfer Protocol (SMTP)</li>
<li>Internet Message Access Protocol (IMAP)</li>
<li>Post Office Protocol (POP)</li>
<li>Network News Transfer Protocol (NNTP)</li>
<li>Lightweight Directory Access Protocol (LDAP) (alpha)</li>
<li>Gopher</li>
<li>Finger</li>
</ul>

<p>
The inetlib library is similar in intent to the Python internet protocols
library - the API is as close as possible to the intent of the underlying
protocol design. This allows for very efficient coding of user agents.
</p>

<p>
Additionally, inetlib includes URLStreamHandler implementations for some
of the protocols. These can be used to add support for the corresponding
URL scheme to the java.net.URL class.
</p>

</en>
</boxitem>

<boxtitle><a name="http">Classpath::inetlib::HTTP</a></boxtitle>
<boxitem>
<en>

<p>
The inetlib HTTP client supports HTTP/1.1 as described in RFC 2616, with
the following features:
</p>

<ul>
<li>Persistent connections</li>
<li>Basic and Digest authentication (RFC 2617)</li>
<li>HTTPS</li>
<li>HTTP proxies</li>
<li>HTTP/1.0 compatibility</li>
<li>Support for WebDAV methods and other HTTP extensions</li>
<li>Automatic decoding of the chunked transfer-coding</li>
<li>Parsing of HTTP date headers</li>
<li>Support for the 100-continue expectation</li>
</ul>

<p>
The design of the API is similar to the
<createlink url="http://www.webdav.org/neon/" name="neon"> 
WebDAV/HTTP library. A logical connection to the server is instantiated,
and multiple requests can be issued on this connection. Each request has
an atomic <code>dispatch</code> method which returns the response.
All I/O, authentication, etc is handled by registering callback objects
with the request prior to dispatch, which are notified during the dispatch
procedure as necessary. Simple byte-array content callbacks are supplied
which can manage any request/response content that fits in available memory.
</p>

<p>
An URL stream handler is provided, supporting the full HttpURLConnection
specification.
</p>

</en>
</boxitem>

<boxtitle><a name="ftp">Classpath::inetlib::FTP</a></boxtitle>
<boxitem>
<en>

<p>
The inetlib FTP client supports both active and passive mode FTP and all
transfer modes and representation types. The client implements RFC 959,
with the following exceptions and limitations:
</p>

<ul>
<li>Only one concurrent transfer connection is supported</li>
<li>The STAT, HELP, SITE, SMNT, and ACCT commands are not supported</li>
<li>The TYPE command does not allow alternatives to the default bytesize
(Non-print), and local bytesize is not supported</li>
</ul>

<p>
An URL stream handler is provided, which allows the setting of transfer modes
and representation types by means of the <code>setRequestProperty</code>
method.
</p>

</en>
</boxitem>

<boxtitle><a name="smtp">Classpath::inetlib::SMTP</a></boxtitle>
<boxitem>
<en>

<p>
The inetlib SMTP client fully implements RFC 2821 including the ESMTP
extension standard.
</p>

<p>
The client also implements TLS negotiation (RFC 3207) and SASL
authentication (RFC 2554).
</p>

</en>
</boxitem>

<boxtitle><a name="imap">Classpath::inetlib::IMAP</a></boxtitle>
<boxitem>
<en>

<p>
The inetlib IMAP client fully implements IMAP4rev1 and includes the
following features:
</p>

<ul>
<li>Extensible authentication using any available SASL mechanism</li>
<li>TLS negotiation (RFC 2595)</li>
<li>Automatic UTF-7imap folder name decoding/encoding</li>
<li>IMAP over SSL</li>
</ul>

</en>
</boxitem>

<boxtitle><a name="pop3">Classpath::inetlib::POP3</a></boxtitle>
<boxitem>
<en>

<p>
The inetlib POP client implements version 3 only, as specified in RFC 1939,
with the exception of the no-arg LIST and UIDL commands (use STAT followed
by multiple LIST and/or UIDL instead).
It supports the following features:
</p>

<ul>
<li>The POP3 extension mechanism CAPA</li>
<li>Extensible authentication using any available SASL mechanism via
the AUTH mechanism (RFC 1734)</li>
<li>TLS negotiation (RFC 2595)</li>
</ul>

</en>
</boxitem>

<boxtitle><a name="nntp">Classpath::inetlib::NNTP</a></boxtitle>
<boxitem>
<en>

<p>
The inetlib NNTP client implements all of RFC 977, and many of the common
NNTP extensions specified in RFC 2980. It supports the XOVER and XHDR
commands, and simple authentication.
</p>

<p>
There is also a newsrc mechanism for storing newsgroup subscriptions and read
articles in an implementation-independent manner, including a file-based
implementation.
</p>

</en>
</boxitem>
</box>

