📄 httpserver.java
字号:
import java.io.*;
import java.net.*;
import java.util.StringTokenizer;
/** * This class implements a multithreaded simple HTTP *
server that supports the GET request method.* It listens on port 44, waits client requests, and * serves documents.*/
public class HttpServer {
// The port number which the server
// will be listening on
public static final int HTTP_PORT = 7000;
public ServerSocket getServer() throws Exception {return new ServerSocket(HTTP_PORT);}
// multi-threading -- create a new connection // for each reques
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( "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("\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("");out.flush();} finally {out.close();}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -