Java实现一个简易HTTP服务器 (二) -- 多线程
运行方法:新建项目后在目录下创建index.html.
favicon为可选项,作为网站图标
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(80);
System.out.println("Server started at " + new Date() + "\n");
try {
while (true) {
// 通信socket的获得
Socket socket = serverSocket.accept();
new Thread(new Handler(socket)).start();
}
} catch (Exception e) {
e.printStackTrace();
serverSocket.close();
}
}
}
public class Handler implements Runnable {
public Socket socket;
public static int BUFFERSIZE = 2048;
public Handler(Socket socket) {
this.socket = socket;
}
public void run() {
try {
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
byte[] buf = new byte[BUFFERSIZE];
// 读取数据
int len = in.read(buf);
String s = new String(buf, 0, len);
Request request = new Request(s);
Logger logger = new Logger(System.out);
logger.writelog(request.toString()+"\n");
//返回数据
String path = request.path;
if (path.equals("/"))
path = "index.html";
if (path.equals("/favicon.ico"))
path = "favicon.ico";
File file = new File(path);
InputStream fin = new FileInputStream(file);
out.write(("HTTP/1.1 200 OK\n" + "Content-Type: text/html" + "\n\n").getBytes());
while ((len = fin.read(buf)) > 0)
out.write(buf, 0, len);
// 关闭连接
socket.close();
fin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
原文地址:https://www.cnblogs.com/cdbb/p/12558120.html
时间: 2024-11-02 12:59:31