zoukankan      html  css  js  c++  java
  • ##如何根据一个端口号,建立BS架构,在网页中打开我们要想的网站

    关于这个简单的小项目,我们可能会用到的知识点:

      IO流

      网络编程

      多线程

      对象的创建,循环等等

    public class BSTCPServer {
        public static void main(String[] args) throws IOException{
            //1   创建服务器对象ServerSocket  系统的端口号指定   10800
            ServerSocket server = new ServerSocket(10800);
            //2  使用ServerSocket  对象中的方法accept();   监听并获取请求的客户端Socketd对象(浏览器)
            Socket socket = server.accept();
            // 3   使用Socket对象中的方法  getInputStream 获取网络字节输入流  InputStream对象
            InputStream is = socket.getInputStream();
            //4 读取客户端请求的信息
            byte[] bytes = new byte[1024];
            int len = is.read(bytes);
            System.out.println(new String(bytes,0,len));
            //  把网络字节输入流    转为网络字符缓冲流
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            //读取 客户请求信息的第一行  包含了页面的地址
            String line = br.readLine();
           // System.out.println(line);
            // 切割字符串    split(" ");
            String[] arr = line.split(" ");
            System.out.println(arr[1]);
            //  截取  字符串    substring
            String path = arr[1].substring(1);
            System.out.println(path);//  路径
            //创建本地字节输入流      缓冲流进行包装一下     提高效率
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
            //  获取网络字节输出流  (缓冲流)
            BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
            //  使用BufferedInputStream ---》read读取html 文件
            //  告诉客户端  写的是一个html 文件
    
            bos.write("HTTP/1.1 200 OK
    ".getBytes());
            bos.write("Content-Type:text/html
    ".getBytes());
            bos.write("
    ".getBytes());
    
            int len  = 0 ;
            while ((len  = bis.read())!=-1){
                //使用BufferedOutputStream---》write把读取到了html文件  写到客户端显示
                bos.write(len);
            }
            //释放资源
            bos.close();
            bis.close();
            socket.close();
            server.close();
        }
    }
  • 相关阅读:
    Codeforces 1184C1. Heidi and the Turing Test (Easy)题解
    CodeChef Chef and Digit Jumps 题解
    CodeChef Squirrel and chestnut 题解
    Atcoder Beginner Contest 082 C
    Atcoder Beginner Contest 081 C
    Atcoder Beginner Contest 080 C
    Atcoder Beginner Contest 079 C
    Atcoder Beginner Contest 078 C
    Topcoder 10524(SRM451 Div.1 C) BrickPuzzle题解
    广义表是非线性结构
  • 原文地址:https://www.cnblogs.com/liurui-bk517/p/10972179.html
Copyright © 2011-2022 走看看