# Poco::Net

# class HTTPServer

Library: Net
Package: HTTPServer
Header: Poco/Net/HTTPServer.h

## Description

A subclass of TCPServer that implements a full-featured multithreaded HTTP server.

A HTTPRequestHandlerFactory must be supplied. The ServerSocket must be bound and in listening state.

To configure various aspects of the server, a HTTPServerParams object can be passed to the constructor.

The server supports:

- HTTP/1.0 and HTTP/1.1
- automatic handling of persistent connections.
- automatic decoding/encoding of request/response message bodies using chunked transfer encoding.

Please see the TCPServer class for information about connection and thread handling.

See RFC 2616 <http://www.faqs.org/rfcs/rfc2616.html> for more information about the HTTP protocol.

## Inheritance

Direct Base Classes: TCPServer

All Base Classes: TCPServer, Poco::Runnable

## Member Summary

Member Functions: stopAll

Inherited Functions: currentConnections, currentThreads, maxConcurrentConnections, params, port, queuedConnections, refusedConnections, run, start, stop, threadName, totalConnections

## Constructors

### HTTPServer

HTTPServer(
HTTPRequestHandlerFactory::Ptr pFactory,
const ServerSocket & socket,
HTTPServerParams::Ptr pParams
);

Creates the HTTPServer, using the given ServerSocket.

New threads are taken from the default thread pool.

### HTTPServer

HTTPServer(
HTTPRequestHandlerFactory::Ptr pFactory,
Poco::ThreadPool & threadPool,
const ServerSocket & socket,
HTTPServerParams::Ptr pParams
);

Creates the HTTPServer, using the given ServerSocket.

New threads are taken from the given thread pool.

## Destructor

### ~HTTPServer

~HTTPServer();

Destroys the HTTPServer and its HTTPRequestHandlerFactory.

## Member Functions

### stopAll

void stopAll(
bool abortCurrent = false
);

Stops the server. In contrast to TCPServer::stop(), which also stops the server, but allows all client connections to finish at their pace, this allows finer control over client connections.

If abortCurrent is false, all current requests are allowed to complete. If abortCurrent is false, the underlying sockets of all client connections are shut down, causing all requests to abort.