|
|
不说话,直接上代码:
import java.io.BufferedReader;import java.io.BufferedWriter;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.OutputStreamWriter;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;import java.util.Date;public class HttpServer { public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket();InetSocketAddress sa = new InetSocketAddress(9090); ss.bind(sa);do{Socket socket = ss.accept(); InputStream ins = socket.getInputStream();BufferedReader bf = new BufferedReader(new InputStreamReader(ins)); String line = bf.readLine();while(line != null && !"".equals(line)){System.out.println(line); if(line .startsWith("GET")){String[] head = line.split(" ");String fileName = "C:/Documents and Settings/Administrator/workspace/Test"+ head[1];System.out.println(fileName); File f = null;FileInputStream fin = null;try{f = new File(fileName);fin = new FileInputStream(f);}catch(Exception e){//e.printStackTrace();//404OutputStream os = socket.getOutputStream();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));writeHeader(os, 404, "NOT FOUND:"+head[1]); bw.write("<h1>Not found!</h1>");bw.flush();bw.close();socket.close();break;}OutputStream os = socket.getOutputStream(); writeHeader(os, 200, "OK");int c = 0;byte[] b = new byte[1024];c = fin.read(b);while(c != -1){os.write(b, 0, c);c = fin.read(b);};fin.close();os.flush();os.close();socket.close();break;}else{HttpHeader header = new HttpHeader(line);System.out.println(header); }line = bf.readLine();}if(socket.isClosed())continue;OutputStream os = socket.getOutputStream();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));//line = "hello world";writeHeader(os, 200, "OK");String body = "<h1>This is hello world !The time is:"+new Date().toLocaleString()+"。世界你好!"+"<h1>";bw.write(body);bw.flush();bw.close();os.close();socket.close();}while(true);}public static void writeHeader(OutputStream os, int httpStatus, String statusDesc) throws IOException{String header = "HTTP/1.1 "+httpStatus+" "+statusDesc+"\n" + "Server: wbs\n" + "Content-Type: text/html;charset=utf-8\n" + "Content-Language: zh-CN\n" + "Date:"+new Date()+"\n\n";os.write(header.getBytes());}}class RequestHeader{private String method;private String file;private String protocal; }class HttpHeader{private String key;private String value;public HttpHeader(String header){header = header.trim();this.key = header.split(": ")[0];this.value = header.split(": ")[1];}public HttpHeader(String key, String value) { this.key = key;this.value = value;}public String toString(){return this.key + ": "+this.value;}public String getKey() {return key;}public void setKey(String key) {this.key = key;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}} |
|