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