Java | 模拟网站服务器,使用浏览器访问自己编写的服务端程序,查看网页效果。

模拟B\S服务器
模拟网站服务器,使用浏览器访问自己编写的服务端程序,查看网页效果。

代码:

package a;
/*
模拟B\S服务器
模拟网站服务器,使用浏览器访问自己编写的服务端程序,查看网页效果。
 */

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Demo11Server {
    public static void main(String[] args) throws IOException {
        //创建服务端
        ServerSocket serverSocket = new ServerSocket(7777);
        while (true) {
            //建立连接
            Socket accept = serverSocket.accept();
            //创建多线程
            new Thread(new imp(accept)).start();
        }
    }

    public static class imp implements Runnable {
        private Socket accept;

        public imp(Socket accept) {
            this.accept = accept;
        }

        @Override
        public void run() {
            try {
                //转换流(字节->字符)
                InputStreamReader inputStreamReader = new InputStreamReader(accept.getInputStream());
                //读取字符串,,读取浏览器请求第一行
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                //得到文件路径
                String ss = bufferedReader.readLine();
                String s = ss.split(" ")[1];
                String path = s.substring(1);
                System.out.println(path);
                FileInputStream fileInputStream = new FileInputStream("D:\\IdeaProjects\\myself\\src\\a\\" + path);//D:\IdeaProjects\myself\src\a\web\index.html
                //向浏览器 回写数据
                OutputStream os = accept.getOutputStream();
                int len;
                byte[] bytes = new byte[1024];
                // 写入HTTP协议响应头,固定写法
                os.write("HTTP/1.1 200 OK\r\n".getBytes());
                os.write("Content‐Type:text/html\r\n".getBytes());
                // 必须要写入空行,否则浏览器不解析
                os.write("\r\n".getBytes());
                while ((len = fileInputStream.read(bytes)) != -1) {
                    os.write(bytes, 0, len);
                    os.flush();
                }
                //释放资源
                os.close();
                fileInputStream.close();
                bufferedReader.close();
                inputStreamReader.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

效果:

在这里插入图片描述
在这里插入图片描述

发布了17 篇原创文章 · 获赞 5 · 访问量 4241

猜你喜欢

转载自blog.csdn.net/y1534414425/article/details/102643485