## What is "nanohttpd"?

*NanoHttpd* is a light-weight HTTP server designed for embedding in other applications.

*NanoHttpd* has been released under a Modified BSD licence.

## Core Features
* Only one Java file, providing HTTP 1.1 support.
* 2 "flavors" - one at "current" standards and one strictly Java 1.1 compatible.
* Released as open source, free software, under a Modified BSD licence.
* No fixed config files, logging, authorization etc. (Implement by yourself if you need them.)
* Experimental support for SSL (see the 'ssl-support' branch in git)
* Basic support for cookies
* Supports parameter parsing of GET and POST methods.
* Rudimentary PUT support (added in 1.25).
* Support for HEAD and DELETE requests.
* Supports single and multi-value parameters (w/ a helper method) if needed.
* Supports file upload (since version 1.2, 2010) with minimal memory overhead.
* Never caches anything.
* Doesn't limit bandwidth, request time or simultaneous connections.
* All header names are converted lowercase so they don't vary between browsers/clients.
* Very low memory overhead when processing even the largest of requests.
* Temp file usage and threading model are easily cutomized.
* Persistent connections (Connection "keep-alive") support allowing multiple requests to be served over a single socket connection.

## Websocket Support
* Tested on Firefox, Chrome and IE.

## Webserver Features
* Supports both dynamic content and file serving.
* Default code serves files and shows all HTTP parameters and headers.
* File server supports directory listing, ```index.html``` and ```index.htm```.
* File server supports partial content (streaming).
* File server supports ETags.
* File server does the 301 redirection trick for directories without ```/```.
* File server supports simple skipping for files (continue download).
* File server serves also very long files without memory overhead.
* Contains a built-in list of most common mime types.
* Runtime extension support (extensions that serve particular mime types) - example extension that serves Markdown formatted files. Simply including an extension JAR in the webserver classpath is enough for the extension to be loaded.

*Thank you to everyone who has reported bugs and suggested fixes.*