📄 httpserver.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 + -