16 NNTP: Newsgroup Protocol

▼ |  | Net: Networking Libraries

1 | HTTP Client
2 | URLs and HTTP
3 | URI Codec: Encoding and Decoding URIs
4 | FTP: Client
5 | Send URL: Opening a Web Browser
6 | SMTP: Sending E-Mail
7 | sendmail: Sending E-Mail
8 | Headers: Parsing and Constructing
9 | Header Field Encoding
10 | IMAP: Reading Mail
11 | POP3: Reading Mail
12 | MIME: Decoding Internet Data
13 | Base 64: Encoding and Decoding
14 | Quoted-Printable: Encoding and Decoding
15 | DNS: Domain Name Service Queries
16 | NNTP: Newsgroup Protocol
17 | TCP: Unit and Signature
18 | TCP Redirect: tcp^ via Channels
19 | SSL Unit: tcp^ via SSL
20 | CGI Scripts
21 | Cookie: Legacy HTTP Client Storage
22 | Git Repository Checkout
| Bibliography
| Index

► | 16 | NNTP: Newsgroup Protocol

16.1 | Connection and Operations
16.2 | Exceptions
16.3 | NNTP Unit
16.4 | NNTP Signature

On this page:

16.1`` Connection and Operations
communicator
connect-to-server
disconnect-from-server
open-news-group
authenticate-user
head-of-message
body-of-message
newnews-since
generic-message-command
make-desired-header
extract-desired-headers
16.2`` Exceptions
nntp
unexpected-response
bad-status-line
premature-close
bad-newsgroup-line
non-existent-group
article-not-in-group
no-group-selected
article-not-found
authentication-rejected
16.3`` NNTP Unit
nntp@
16.4`` NNTP Signature
nntp^

top ← prev up next →

### 16`` NNTP: Newsgroup Protocol

(require net/nntp) | package: net-lib

The net/nntp module provides tools to access Usenet group via NNTP [RFC977].

#### 16.1`` Connection and Operations

> > struct
> > (struct |  | communicator (sender receiver server port)
> #:extra-constructor-name make-communicator)
> sender : output-port?
> receiver : input-port?
> server : string?
> port : (integer-in 0 65535)

Once a connection to a Usenet server has been established, its state is stored in a communicator, and other procedures take communicators as an argument.

> procedure (connect-to-server server [port-number]) → communicator?
> server : string?
> port-number : (integer-in 0 65535) = 119

Connects to server at port-number.

> procedure (disconnect-from-server communicator) → void?
> communicator : communicator?

Disconnects an NNTP communicator.

> procedure (open-news-group communicator newsgroup)
> | → |  |
> exact-nonnegative-integer?
> exact-nonnegative-integer?
> exact-nonnegative-integer?
> communicator : communicator?
> newsgroup : string?

Selects the newsgroup of an NNTP connection. The returned values are the total number of articles in the group, the first available article, and the last available article.

> > procedure
> > (authenticate-user |  | communicator |  |  |  |
> > |  | username |  |  |  |
> > |  | password) |  | → |  | void?
> communicator : communicator?
> username : string?
> password : string?

Tries to authenticate a user with the original authinfo command (uses cleartext). The password argument is ignored if the server does not ask for it.

> > procedure
> > (head-of-message |  | communicator |  |  |  |
> > |  | message-index) |  | → |  | (listof string?)
> communicator : communicator?
> message-index : exact-nonnegative-integer?

Given a message number, returns its header lines.

> > procedure
> > (body-of-message |  | communicator |  |  |  |
> > |  | message-index) |  | → |  | (listof string?)
> communicator : communicator?
> message-index : exact-nonnegative-integer?

Given a message number, returns the body of the message.

> procedure (newnews-since communicator message-index) → (listof string?)
> communicator : communicator?
> message-index : exact-nonnegative-integer?

Implements the NEWNEWS command (often disabled on servers).

> > procedure
> > ((generic-message-command |  | command |  |  |  |
> > |  | ok-code) |  |  |  |
> > |  | communicator |  |  |  |
> > |  | message-index) |  | → |  | (listof string?)
> command : string?
> ok-code : exact-integer?
> communicator : communicator?
> message-index : exact-nonnegative-integer?

Useful primitive for implementing head-of-message, body-of-message and other similar commands.

> procedure (make-desired-header tag-string) → regexp?
> tag-string : string?

Takes a header field’s tag and returns a regexp to match the field

> procedure (extract-desired-headers header desireds) → (listof string?)
> header : (listof string?)
> desireds : (listof regexp?)

Given a list of header lines and of desired regexps, returns the header lines that match any of the desireds.

#### 16.2`` Exceptions

> > struct
> > (struct |  | nntp exn ()
> #:extra-constructor-name make-nntp)

The supertype of all NNTP exceptions.

> > struct
> > (struct |  | unexpected-response nntp (code text)
> #:extra-constructor-name make-unexpected-response)
> code : exact-integer?
> text : string?

Raised whenever an unexpected response code is received. The text field holds the response text sent by the server.

> > struct
> > (struct |  | bad-status-line nntp (line)
> #:extra-constructor-name make-bad-status-line)
> line : string?

Raised for mal-formed status lines.

> > struct
> > (struct |  | premature-close nntp (communicator)
> #:extra-constructor-name make-premature-close)
> communicator : communicator?

Raised when a remote server closes its connection unexpectedly.

> > struct
> > (struct |  | bad-newsgroup-line nntp (line)
> #:extra-constructor-name make-bad-newsgroup-line)
> line : string?

Raised when the newsgroup line is improperly formatted.

> > struct
> > (struct |  | non-existent-group nntp (group)
> #:extra-constructor-name make-non-existent-group)
> group : string?

Raised when the server does not recognize the name of the requested group.

> > struct
> > (struct |  | article-not-in-group nntp (article)
> #:extra-constructor-name make-article-not-in-group)
> article : exact-integer?

Raised when an article is outside the server’s range for that group.

> > struct
> > (struct |  | no-group-selected nntp ()
> #:extra-constructor-name make-no-group-selected)

Raised when an article operation is used before a group has been selected.

> > struct
> > (struct |  | article-not-found nntp (article)
> #:extra-constructor-name make-article-not-found)
> article : exact-integer?

Raised when the server is unable to locate the article.

> > struct
> > (struct |  | authentication-rejected nntp ()
> #:extra-constructor-name make-authentication-rejected)

Raised when the server reject an authentication attempt.

#### 16.3`` NNTP Unit

> > > nntp@ and nntp^ are deprecated. They exist for backward-compatibility and will likely be removed in the future. New code should use the net/nntp module.

(require net/nntp-unit) | package: compatibility-lib

> value nntp@ : unit?

Imports nothing, exports nntp^.

#### 16.4`` NNTP Signature

(require net/nntp-sig) | package: compatibility-lib

> signature nntp^ : signature

Includes everything exported by the net/nntp module.

top ← prev up next →