W3C libwww LibGuide

W3C Library Packages and Interfaces

Libwww consists of a set of APIs called packages which covers multiple related source modules; on Wintel packages are organized into DLLs and on Unix we organize them into separate libraries. A package interface is exported via a single include file of the type WWW*.h, for example WWWCore.h.

You can also have a look at the complete list of all public functions.

Basic Utility Packages

The core interfaces must be included in all applications.

Windows Specific Package

This is a small interface that handles trace messages on Windows

Basic Utility Package

The basic utility package contains mostly container modules, dynamic strings and other stuff that you can't live without when building applications. The modules are used by all other libwww packages but can also be used by the application.

Libwww Core Package

The libwww core package is designed as a set of registration modules where features can be registered dynamically by the application. Examples of features that the application may want to register is HTTP access, local file access, HTML parser, etc. In the application package, you can find a set of default profiles helping you registering the most commonly used features.

Libwww Initialization Packages

These packages help the application set up functionality.

Profile Initialization Package

Libwww is a framework for adding functionality. It has hooks for adding protocol modules, like for example HTTP, FTP, and also for adding streams that can convert from one media type to some other type, or presenting the result to the user. In the distribution file of the Library you will find a large set of protocol modules and streams already implemented. However, in order to use these you need to initialize them. This can be done by using the services provided by the WWWInit module.

High Level Application Packages

These packages provides services including handling proxies, gateways, configuration files, support for PUT, POST, OPTIONS, HEAD, etc. requests.

Application Utilities

This application package handles a lot of features that many applications need: dialogs and progress notifications, high level URI resolving, rule files etc.

Transport Packages

Transports are registered dynamically in libwww. This means that libwww is independent of the transport being used (for example TCP) and you can therefore use libwww in any context you like. Each transport is registered with a set of parameters describing how the transport behaves, for example whether it supports preemptive access etc.

TCP and Local File Transport Package

This is the package that provides the TCP and Local file transports used by the protocol packages.

WebMUX Transport Package - Experimental!!!

This is a very experimental package that provides pieces of the WebMUX specification

SSL Transport Package

This is the package that provides SSL transport access used by the https URI scheme, for example

MIME Packages

These packages handle MIME and the like.

MIME Parser and Generator

The MIME parser package contains all the libwww functionality for handling RFC822/MIME parsing and generation including multipart MIME etc.

Protocol Packages

Protocols are also registered dynamically in libwww. They are registered to use a specific transport and whether they support preemptive access etc. See the application level packages for how to resolve URIs using libwww

Local File Access

This is the include file for resolving file: addresses or equivalent

FTP Access

This is the include file for resolving ftp: addresses or equivalent

Gopher Access

This is the include file for resolving gopher: addresses or equivalent

HTTP Access

This is the include file for resolving http: addresses or equivalent

News Access

This is the include file for resolving news: and nntp: addresses or equivalent.

Telnet Access

This is the include file for resolving telnet:, rlogin:, tn3270: addresses or equivalent.

WAIS Access

This is the include file for resolving wais: addresses or equivalent

Persistent Caching Packages

These packages handle persistent management of information

HTTP/1.1 Persistent Cache Package

This module implements a HTTP/1.1 persistent cache manager.

Stream Packages

Streams and converters are an essential part of libwww - all dataflow happens using streams.

Special Streams Package

This interface provides a set of specialized stream. For example a stream for guessing unknown media types from magic words. It also contains streams for downloading a document into a memory buffer, counting content length and much more.

Directory Browsing Package

The directory browsing pacakge contains code for handling browsing folders in both local files including handling icons and the like.

ZLib Compression and Decompression Streams Package

Libwww can use zlib to compress/decompress content on the fly. This requires that zlib is available to link against, see the instructions on how to interact with external packages for detail.

HTML and XML Parser Packages

HTML Parser and Generator

This is the default libwww HTML parser based on a simple callback scheme into the application. It also contains code for generating HTML.

Expat XML Wrapper Package

Libwww can use the Expat XML parser to handle XML. This requires that the expat parser is available, see the instructions on how to interact with external packages for detail

Database Access Packages

Database access can for example be used to handle logging etc.

MySQL Access Package

Libwww can use MySQL for various types of logging etc. This requires that the mysql client library is available, see the instructions on how to interact with external packages for detail


Henrik Frystyk Nielsen,
@(#) $Id: Overview.html,v 1.34 2000/07/12 10:34:49 kahan Exp $