requestprocesser.java

来自「ssd8 java socket编程实验的代码」· Java 代码 · 共 86 行

JAVA
86
字号
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Date;

public class RequestProcesser {

	private InputStream input;
	private String output;
	private String dir;
	private String type;
	private String accept;
	private String accept_Language;
	private String accept_Encoding;
	private String user_Agent;
	private String host;
	private String connection;
	private byte[] content ;

	public RequestProcesser(InputStream input) {
		super();
		this.input = input;
	}

	public String getOutput() {
		return output;
	}

	public void setOutput(String output) {
		this.output = output;
	}

	public byte[] proccess() throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(input));
		try {
			String get = in.readLine();
			dir = get.split(" ")[1];
			if (dir.endsWith("jpg|gif"))
				type = "application/binary";
			else
				type = "text/html";
			File a = new File(dir.substring(1));
			FileInputStream cp = new FileInputStream(a);
			content = new byte[cp.available()];
			cp.read(content);
			accept = in.readLine();
			accept_Language = in.readLine();
			accept_Encoding = in.readLine();
			user_Agent = in.readLine();
			host = in.readLine();
			connection = in.readLine();
			System.out.println(get);
		} catch (IOException e) {
			e.printStackTrace();
		}
		String a;
		StringBuffer b = new StringBuffer();
		a = in.readLine();
		while (in.ready()) {
			b.append(a);
			b.append("\n");
			a = in.readLine();
		}
	
		String adf = "HTTP/1.1 200 OK\nConnection:close\nDate:"
				+ new Date().toGMTString() + "\nServer:sdg\n"
				+ "Last-Modified:" + new Date().toGMTString()
				+ "\nContent-Length:" + content.length + "\nContent-Type:" + type
				+ "\n\n";
		byte[] result = new byte[adf.length()+content.length];
		int i=0;
		for(byte c:adf.getBytes())
		{
			result[i++] = c;
		}
		for(byte c:content)
		{
			result[i++] = c;
		}
		return result;
	}
}

⌨️ 快捷键说明

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