⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpserver.java~3~

📁 java开发的HttpServer程序
💻 JAVA~3~
字号:
import java.io.*;import java.net.*;import java.util.StringTokenizer;public class HttpServer {    public static final int HTTP_PORT = 8080;    public ServerSocket getServer() throws Exception {        return new ServerSocket(HTTP_PORT);    }    // multi-threading -- create a new connection for each request    public void run() {        ServerSocket listen;        try {            listen = getServer();            while(true) {                Socket client = listen.accept();                ProcessConnection cc = new                    ProcessConnection(client);            }        } catch(Exception e) {            System.out.println("Exception:  "+e.getMessage());        }    }    // main program    public static void main(String argv[]) throws        Exception {        HttpServer httpserver = new HttpServer();        httpserver.run();    }}class ProcessConnection extends Thread {    Socket client;    BufferedReader is;    DataOutputStream os;    public ProcessConnection(Socket s) { // constructor        client = s;        try {            is = new BufferedReader(new InputStreamReader                                    (client.getInputStream()));            os = new DataOutputStream(client.getOutputStream());        } catch (IOException e) {            System.out.println("Exception: "+e.getMessage());        }        this.start(); // Thread starts here...this start()  will call run()            }    public void run() {        try {            // get a request and parse it.            String request = is.readLine();             System.out.println( "From HttpServer for testing");            System.out.println( "Request: "+request );            StringTokenizer st = new StringTokenizer( request );            if ( (st.countTokens() >= 2) &&                 st.nextToken().equals("GET") ) {                if ( (request =                      st.nextToken()).startsWith("/") )                    request = request.substring( 1 );                if ( request.equals("") )                    request = request + "index.html";                File f = new File(request);                shipDocument(os, f);            } else {                os.writeBytes( "400 Bad Request" );            }            client.close();        } catch (Exception e) {            System.out.println("Exception: " +                               e.getMessage());        }    }    /**     * Read the requested file and ships it     * to the browser if found.     */    public static void shipDocument(DataOutputStream out,                                    File f) throws Exception {        try {            DataInputStream in = new                DataInputStream(new FileInputStream(f));            int len = (int) f.length();            byte[] buf = new byte[len];            in.readFully(buf);            in.close();            out.writeBytes("HTTP/1.0 200 OK\r\n");            out.writeBytes("Content-Length: " +                           f.length() +"\r\n");            out.writeBytes("Content-Type: text/html\r\n\r\n");            out.write(buf);            out.flush();        } catch (Exception e) {            out.writeBytes("<html><head><title>error</title> </head><body>\r\n\r\n");            out.writeBytes("HTTP/1.0 400 " + e.getMessage() + "\r\n");            out.writeBytes("Content-Type: text/html\r\n\r\n");            out.writeBytes("</body></html>");            out.flush();        } finally {            out.close();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -