02网络编程_B/S
2020-07-06 23:59
106 查看
- B(Browser)/ S(Server)结构:浏览器和服务器结构
使用本地地址模拟服务器,客户端访问html页面,服务器回写html页面到浏览器上
//客户端 public class TCPServer { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8080); /* 浏览器解析服务器回写的html页面中如果有图片,那么浏览器就会单独开启一个线程,读取服务器的图片 我们就让服务器一直处于监听状态,客户端请求一次,服务器就回写一次 */ while(true){ new Thread(new Runnable() { @Override public void run() { try { Socket socket = server.accept(); InputStream is = socket.getInputStream(); /*int len; byte[] bytes = new byte[1024]; while((len = is.read(bytes))!= -1){ System.out.println(new String(bytes,0,len)); }*/ //把is网络字节输入流对象,转换为字符缓冲输入流 BufferedReader br = new BufferedReader(new InputStreamReader(is)); //获取客户端请求第一行 GET /day2/web/index.html HTTP/1.1 String line = br.readLine(); System.out.println(line); //多张图片,单独开线程获取每一张图片 //把读取的信息进行切割,只要中间部分 String[] arr = line.split(" ");// 只要/day2/web/index.html // 把前面的/去掉 String htmlpath = arr[1].substring(1);//从第一个截取到末尾 //创建一个本地字节输入流,构造方法中绑定要读取的html路径 FileInputStream fis = new FileInputStream("D:\\IDEA\\"+htmlpath); //使用Socket中的方法getOutputStream获取网络输出流OutputStream对象 OutputStream os = socket.getOutputStream(); // 写入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()); //一读一写,把服务器读取的HTML回写到客户端 int len = 0; byte[] bytes = new byte[1024]; while((len = fis.read(bytes))!= -1) { os.write(bytes,0,len); } //释放资源 fis.close(); socket.close(); }catch (IOException e){ System.out.println(e); } } }).start(); } // server.close(); } }
小问题:IDEA总是找不到相对路径,所以在截取完的htmlpath再加上项目在主机的位置,补全路径才可以访问。
相关文章推荐
- Linux_网络编程_7.进程池_02.TCP粘包,发送接收不匹配问题,进程池小结
- 第10章 网络编程 02_TCP_Socket_1
- 26-网络编程-02-网络编程(网络要素-IP地址)
- Java基础23天--01/02--网络编程
- c#网络编程学习笔记02_Tcp编程(中)_简单的同步tcp聊天程序
- java网络编程基础夯实02-InetAddress类
- c语言编程--网络编程之epoll后续02
- android网络编程 -- HTTP通信(02) Android HTTP 通信 [附源码分析]
- Android网络编程--问题汇总(02) 利用花生壳实现免费外网服务器搭建
- Linux_网络编程_9.线程池_02线程池退出机制代码实现
- 【网络编程学习笔记02】进程间通讯-邮槽
- c#网络编程学习笔记02_Tcp编程(上)
- 学习笔记(02):C++网络编程进阶-WSA系列API函数
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】
- Java基础知识强化之网络编程笔记02:Socket通信原理图解
- Java基础24天--02--网络编程(TCP--客户端并发上传图片)
- 黑马程序员--网络编程--java学习日记10(基础知识)
- Linux C编程--网络编程3--面向无连接的网络编程
- Linux 下C 网络编程之 socket RAW
- C++ 用libcurl库进行http通讯网络编程