##如何根据一个端口号,创建BS架构,在网页中打开咱们要想的网站

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

  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\r\n".getBytes()); bos.write("Content-Type:text/html\r\n".getBytes()); bos.write("\r\n".getBytes()); int len  = 0 ; while ((len  = bis.read())!=-1){ //使用BufferedOutputStream---》write把读取到了html文件 写到客户端显示
 bos.write(len); } //释放资源
 bos.close(); bis.close(); socket.close(); server.close(); } }
相关文章
相关标签/搜索