1afd3338fe6e7e2179ee4ffbaa409c8692b4346ccPaul Hawke## What is "nanohttpd"?
203b577b50536e29b78df57f7107996ad01eaa32elonen
3afd3338fe6e7e2179ee4ffbaa409c8692b4346ccPaul Hawke*NanoHttpd* is a light-weight HTTP server designed for embedding in other applications.
4afd3338fe6e7e2179ee4ffbaa409c8692b4346ccPaul Hawke
5afd3338fe6e7e2179ee4ffbaa409c8692b4346ccPaul Hawke*NanoHttpd* has been released under a Modified BSD licence.
6afd3338fe6e7e2179ee4ffbaa409c8692b4346ccPaul Hawke
7be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke## Core Features
841b4b6d365ce25453725aa68b1c516f827c70bdePaul Hawke* Only one Java file, providing HTTP 1.1 support.
9a1e2a1273e4bb3e37a0873b5a1a47d9e2271bc30Paul Hawke* 2 "flavors" - one at "current" standards and one strictly Java 1.1 compatible.
10be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* Released as open source, free software, under a Modified BSD licence.
11be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* No fixed config files, logging, authorization etc. (Implement by yourself if you need them.)
128dd183554e56783ecf7cd6b8529cf807b9eb813cPaul Hawke* Experimental support for SSL (see the 'ssl-support' branch in git)
138dd183554e56783ecf7cd6b8529cf807b9eb813cPaul Hawke* Basic support for cookies
14a1e2a1273e4bb3e37a0873b5a1a47d9e2271bc30Paul Hawke* Supports parameter parsing of GET and POST methods.
15a1e2a1273e4bb3e37a0873b5a1a47d9e2271bc30Paul Hawke* Rudimentary PUT support (added in 1.25).
16a1e2a1273e4bb3e37a0873b5a1a47d9e2271bc30Paul Hawke* Support for HEAD and DELETE requests.
17a1e2a1273e4bb3e37a0873b5a1a47d9e2271bc30Paul Hawke* Supports single and multi-value parameters (w/ a helper method) if needed.
18a1e2a1273e4bb3e37a0873b5a1a47d9e2271bc30Paul Hawke* Supports file upload (since version 1.2, 2010) with minimal memory overhead.
19be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* Never caches anything.
20be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* Doesn't limit bandwidth, request time or simultaneous connections.
21be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* All header names are converted lowercase so they don't vary between browsers/clients.
22be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* Very low memory overhead when processing even the largest of requests.
23a1e2a1273e4bb3e37a0873b5a1a47d9e2271bc30Paul Hawke* Temp file usage and threading model are easily cutomized.
24d8cc726701b3438ef5d4fe2b16fa7c8b35f741a8Paul Hawke* Persistent connections (Connection "keep-alive") support allowing multiple requests to be served over a single socket connection.
25be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke
26b891f27b1047103cf41fb71d94989b6cd8336ed5Paul Hawke## Websocket Support
27b891f27b1047103cf41fb71d94989b6cd8336ed5Paul Hawke* Tested on Firefox, Chrome and IE.
28b891f27b1047103cf41fb71d94989b6cd8336ed5Paul Hawke
29be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke## Webserver Features
30be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* Supports both dynamic content and file serving.
31be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* Default code serves files and shows all HTTP parameters and headers.
32be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* File server supports directory listing, ```index.html``` and ```index.htm```.
33be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* File server supports partial content (streaming).
34be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* File server supports ETags.
35be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* File server does the 301 redirection trick for directories without ```/```.
36be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* File server supports simple skipping for files (continue download).
37be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* File server serves also very long files without memory overhead.
38be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke* Contains a built-in list of most common mime types.
398359473106f5185b502609f043dd1aaea81afe11Paul Hawke* 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.
40be09227d868536848a8d3272ebdffb55d2b764eaPaul Hawke
413c24d71cb9f63f817c358c4f801bec01f1528ad9Paul Hawke*Thank you to everyone who has reported bugs and suggested fixes.*
42