summaryrefslogtreecommitdiff
path: root/doc/www.gnu.org/inetlib.wml
blob: 6ac8705f0eed885a0340dae4c8cb313b4b1301c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#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>