以文本方式查看主题 - 曙海教育集团论坛 (http://sun4.cn/bbs/index.asp) -- JAVA语言开发 (http://sun4.cn/bbs/list.asp?boardid=64) ---- 用java语言实现的迷你型的http服务器代码 (http://sun4.cn/bbs/dispbbs.asp?boardid=64&id=2487) |
-- 作者:wangxinxin -- 发布时间:2010-12-11 10:16:36 -- 用java语言实现的迷你型的http服务器代码 package positron.harness; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.ServerSocket; import java.net.Socket; import java.net.URLEncoder; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.StringTokenizer; import java.util.TimeZone; /** * A simple, tiny, nicely embeddable HTTP 1.0 server in Java * * This class has been trivially modified from its original form, taken from * http://elonen.iki.fi/code/nanohttpd/NanoHTTPD.java * * <p> NanoHTTPD version 1.1, * Copyright © 2001,2005-2007 Jarno Elonen (elonen@iki.fi, http://iki.fi/elonen/ ) * * <p><b>Features + limitations: </b><ul> * * <li> Only one Java file </li> * <li> Java 1.1 compatible </li> * <li> Released as open source, Modified BSD licence </li> * <li> No fixed config files, logging, authorization etc. (Implement yourself if you need them.) </li> * <li> Supports parameter parsing of GET and POST methods </li> * <li> Supports both dynamic content and file serving </li> * <li> Never caches anything </li> * <li> Doesn\'t limit bandwidth, request time or simultaneous connections </li> * <li> Default code serves files and shows all HTTP parameters and headers</li> * <li> File server supports directory listing, index.html and index.htm </li> * <li> File server does the 301 redirection trick for directories without \'/\'</li> * <li> File server supports simple skipping for files (continue download) </li> * <li> File server uses current directory as a web root </li> * <li> File server serves also very long files without memory overhead </li> * <li> Contains a built-in list of most common mime types </li> * <li> All header names are converted lowercase so they don\'t vary between browsers/clients </li> * * </ul> * * <p><b>Ways to use: </b><ul> * * <li> Run as a standalone app, serves files from current directory and shows requests</li> * <li> Subclass serve() and embed to your own program </li> * <li> Call serveFile() from serve() with your own base directory </li> * * </ul> * * See the end of the source file for distribution license * (Modified BSD licence) */ public class NanoHTTPD { // ================================================== // API parts // ================================================== /** * Override this to customize the server.<p> * * (By default, this delegates to serveFile() and allows directory listing.) * * @parm uri Percent-decoded URI without parameters, for example "/index.cgi" * @parm method "GET", "POST" etc. |