Java 用Socket 编写BS服务器

本文介绍如何使用Java的Socket编程实现基本的BS架构服务器。通过创建ServerSocket监听特定端口,接收并处理来自浏览器的请求,读取指定的HTML文件,并将其发送回客户端。文章详细展示了代码实现过程,包括多线程处理、读取本地文件和响应HTTP请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 用Socket 编写BS服务器
用Socket编写服务器
第一步 将HTML的网页放到项目下 列如
在这里插入图片描述
接下来用Socket 编写代码

public class BSsocket {
    public static void main(String[] args) throws IOException {
        //定义服务器端的Socket
        ServerSocket serverSocket = new ServerSocket(8888);
        //开启多线程
        ExecutorService es = Executors.newFixedThreadPool(3);
        while(true){
            es.execute(()->{
                System.out.println("----------------------------------");
                //接受浏览器端的Socket
                Socket accept = null;
                BufferedReader br=null;
                BufferedInputStream bis=null;
                OutputStream outputStream=null;
                try {
                    accept = serverSocket.accept();
                    //创建读取本地文件的流
                    br = new BufferedReader(new InputStreamReader(accept.getInputStream()));
                    byte[] bytes=new byte[1024];
                    //读取一行
                    String s = br.readLine();
                    //切割出文件的路径
                    String[] arr = s.split(" ");
                    //获取HTML 文件的路径
                    String htmlpath =arr[1].substring(1);
                    //读取本地文件
                    bis = new BufferedInputStream(new FileInputStream(htmlpath));
                    int temp=0;
                    //获取 Socket 输出流
                    outputStream = accept.getOutputStream();
                    //网络协议的固定格式
                    outputStream.write("HTTP/1.1 200 OK \r\n".getBytes());
                    outputStream.write("Content-Type:text/html\r\n".getBytes());
                    outputStream.write("\r\n".getBytes());
                    while ((temp=bis.read(bytes))!=-1){
                        //输出 文件
                        outputStream.write(bytes,0,temp);
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    //关闭流
                    try {
                        if (bis!=null){
                            bis.close();
                        }
                        if (outputStream!=null){
                            outputStream.close();
                        }
                        if (accept!=null){
                            accept.close();
                        }


                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }
            });
        }
    }
}

写完之后打开浏览器 开启编写的服务器,输入本地网址和项目名
,回车
在这里插入图片描述
Socket 读取到的字符串
在这里插入图片描述
按空格将项目路径切割出来
在这里插入图片描述
字符串用subString 将/ 取掉 得到完全的项目路径
将HTML 文件通过流的形式传会 客户端就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值