📄 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 + -