1:
2: package com.cnpler;
3:
4: import java.io.BufferedReader;
5: import java.io.File;
6: import java.io.FileInputStream;
7: import java.io.FileNotFoundException;
8: import java.io.IOException;
9: import java.io.InputStream;
10: import java.io.InputStreamReader;
11: import java.io.PrintStream;
12: import java.net.Socket;
13:
14: public class Processor
15: {
16: private Socket sktSocket;
17: private InputStream in;
18: private PrintStream out;
19: // 指定目录
20: public final static String Web_Root = "E:\\Users\\cnpler\\Workspaces\\MyEclipse 10";
21:
22: public Processor(Socket socket)
23: {
24: this.sktSocket = socket;
25: try
26: {
27: in = socket.getInputStream();
28: out = new PrintStream(socket.getOutputStream());
29: }
30: catch (IOException e)
31: {
32: e.printStackTrace();
33: }
34: }
35:
36: public void run()
37: {
38: String filename = parse(in);
39: SendFile(filename);
40: }
41:
42: public String parse(InputStream in)
43: {
44: BufferedReader br = new BufferedReader(new InputStreamReader(in));
45: String filename = null;
46: try
47: {
48: String httpMessage = br.readLine();
49: String[] content = httpMessage.split(" ");
50: if (content.length != 3)
51: {
52: SendErrorMessage(400, "Client query error!");
53: }
54: System.out.println("Code:" + content[0] + ",filename:" + content[1] + ",http version:" + content[2]);
55: filename = content[1];
56: }
57: catch (IOException e)
58: {
59: e.printStackTrace();
60: }
61: return filename;
62: }
63:
64: public void SendErrorMessage(int errorCode, String errorMessagge)
65: {
66: out.println("HTTP/1.0 " + errorCode + " " + errorCode);
67: out.println("content_type: text/html");
68: out.println("");
69: out.println("<html>");
70: out.println("<title>Error Message");
71: out.println("/<title>");
72: out.println("body");
73: out.println("<h1>ErrorCode:" + errorCode + ",Message:" + errorMessagge + "</h1>");
74: out.println("/body");
75: out.println("<html>");
76: out.flush();
77: out.close();
78: try
79: {
80: in.close();
81: }
82: catch (IOException e)
83: {
84: e.printStackTrace();
85: }
86: }
87:
88: public void SendFile(String filename)
89: {
90: File file = new File(Processor.Web_Root + filename);
91: if (!file.exists())
92: {
93: SendErrorMessage(404, "File Not Found!");
94: return;
95: };
96:
97: try
98: {
99: InputStream in = new FileInputStream(file);
100: byte content[] = new byte[(int) file.length()];
101: in.read(content);
102: out.println("HTTP/1.0 200 queryfile");
103: out.println("content_length:" + content.length);
104: out.println("");
105: out.write(content);
106: out.flush();
107: out.close();
108: in.close();
109: }
110: catch (FileNotFoundException e)
111: {
112: e.printStackTrace();
113: }
114: catch (IOException e)
115: {
116: e.printStackTrace();
117: };
118: }
119: }