⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpserver.java

📁 │ .classpath │ .project │ 404.html │ index.html │ welcome.html │ ├─bin │ └─com │
💻 JAVA
字号:
package com.accp.demo.socket;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class HttpServer implements Runnable {
	private static HttpServer server;
	private ServerSocket serverSocket;
	private Socket socket;
	private static final int PORT = 8888;

	private HttpServer() throws IOException {
		// TODO Auto-generated constructor stub
		serverSocket = new ServerSocket(PORT);
		System.out.println("服务器正在监听端口:" + PORT);
		startServer();
	}

	public static HttpServer getInstance() throws IOException {
		if (server == null) {
			server = new HttpServer();
		}
		return server;
	}

	private void startServer() throws IOException {
		while (true) {
			socket = serverSocket.accept();
			System.out.println("客户端:" + socket.getInetAddress() + ":"
					+ socket.getPort());
			new Thread(this).start();
			socket.close();
		}
	}

	private void processRequest(Socket socket) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(socket
				.getInputStream()));
		String info = null;
		// while ((info = br.readLine()) != null) {
		// System.out.println(info);
		// }
		info = br.readLine();
		String[] requestInfo = info.split(" ");
		// for(String s : requestInfo) {
		// System.out.println(s);
		// }
		String fileName = requestInfo[1];
		if (fileName.equals("/")) {
			fileName = "index.html";
		}
		File file = new File("./" + fileName);
		if (!file.exists()) {
			file = new File("./404.html");
		}
		FileInputStream fis = new FileInputStream(file);
		PrintStream ps = new PrintStream(socket.getOutputStream());
		byte[] content = new byte[(int) file.length()];
		fis.read(content);

		ps.write(content);
	}

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		HttpServer server = HttpServer.getInstance();
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		try {
			processRequest(socket);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

⌨️ 快捷键说明

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