美文网首页
Java入门--socket创建BSServer

Java入门--socket创建BSServer

作者: 王二麻子88 | 来源:发表于2020-12-02 23:37 被阅读0次

Java入门--Socket创建BSServe

首先在项目的根路径下, 创建一个 demo.html (内容随便写写)

在Java主程序中

package io.github.wangermaizi.day10;

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

// BS-TCP
public class BSServe {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8848);
        Socket socketClient = serverSocket.accept();
        InputStream ips = socketClient.getInputStream();
        /*
        // 能读取关于本次请求的一些浏览器信息
        int len = 0;
        byte[] bytes = new byte[1024];
        while ((len = ips.read(bytes)) != -1) {
            System.out.println(new String(bytes, 0, len));
        }
        */

        // GET /day06/index.html
        // 根据上述页面需要给浏览器相应内容

        // 把 ips 网络字节流对象, 转为字符缓冲流
        BufferedReader br = new BufferedReader(new InputStreamReader(ips));

        // 通过缓冲流读取第一行
        String line = br.readLine();
        // 把读取信息进行切割, 只要中间的部分
        String[] arr = line.split(" ");
        // 把前面的 /去掉就是 html位于项目的路径
        String htmlPath = arr[1].substring(1);
        // 根据路径读取本地文件
        FileInputStream fis = new FileInputStream(htmlPath);

        // 写入浏览器 HTTP的相应头, 固定写法
        OutputStream ops = socketClient.getOutputStream();
        ops.write("HTTP/1.1 200 OK\r\n".getBytes());
        ops.write("Content-Type:text/html\r\n".getBytes());
        // 必须加入空行否则文件不解析
        ops.write("\r\n".getBytes());

        // 通过 socket写入流, 响应出去 (文件资源的回写)
        int len = 0;
        byte[] bytes = new byte[1024];
        while ((len = fis.read(bytes)) != -1) {
            ops.write(bytes, 0, len);
        }

        socketClient.shutdownInput();
        fis.close();
        ops.close();
        socketClient.close();
        serverSocket.close();

    }
}

相关文章

网友评论

      本文标题:Java入门--socket创建BSServer

      本文链接:https://www.haomeiwen.com/subject/onepwktx.html