创建网站需要多少钱,一般公司网站是什么设计师做,宝塔怎么做两个网站的解析,运营电商是做什么的目录
HTTP协议请求格式
HTTP协议响应格式
Socket
解读代码
服务端优化
解读代码
作业
1. 响应一个 HTML 页面给客户端#xff0c;游览器把接收到的内容进行渲染
2. 文件的媒体类型是写死的#xff0c;肯定不行#xff0c;怎么变成动态#xff1f;
昨天作业答案 …目录
HTTP协议请求格式
HTTP协议响应格式
Socket
解读代码
服务端优化
解读代码
作业
1. 响应一个 HTML 页面给客户端游览器把接收到的内容进行渲染
2. 文件的媒体类型是写死的肯定不行怎么变成动态
昨天作业答案
聊天室 HTTP协议请求格式 HTTP协议响应格式 Socket
使用游览器作为客户端
创建一个服务端当游览器访问时响应 hello 服务端 package com.shao.net;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {// 创建一个ServerSocket对象监听8080端口等待客户端连接ServerSocket ss new ServerSocket(8080);// 调用accept()方法阻塞等待直到有客户端连接到服务器返回一个Socket对象用于与该客户端通信Socket socket ss.accept();System.out.println(客户端连接成功);// 获取Socket对象的输入流用于读取客户端发送的数据InputStream is socket.getInputStream();// 获取Socket对象的输出流用于向客户端发送数据OutputStream os socket.getOutputStream();// 响应的内容String content Hello;// HTTP 响应的格式os.write((HTTP/1.1 200 OK\r\n).getBytes());os.write((Content-Type: text/html\r\n).getBytes());os.write((Content-Length: content.length() \r\n).getBytes());os.write(\r\n.getBytes());os.write(content.getBytes());os.flush();System.out.println(响应成功);}
}游览器访问服务端
访问本地 IP 加服务端监听的端口 解读代码
因为游览器和服务端是使用 HTTP 协议通信所以响应的格式是HTTP响应格式
HTTP 请求格式分为三个部分分别是 请求行、请求头、请求体数据
HTTP 响应格式分为三个部分分别是 响应行、响应头、响应数据
响应行包括 响应协议、状态码、状态码描述
响应头包括 响应数据的类型媒体类型、响应数据的长度等 服务端优化
现在的问题只能访问一次服务端服务端响应之后就关闭了。这显然不是我们想要的服务器是当用户访问的时候都会响应数据
那么如何才能让服务端响应数据之后继续运行呢
解决方案是加个 while 循环
package com.shao.net;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {// 创建一个ServerSocket对象监听8080端口等待客户端连接ServerSocket ss new ServerSocket(8080);while (true) {// 调用accept()方法阻塞等待直到有客户端连接到服务器返回一个Socket对象用于与该客户端通信Socket socket ss.accept();System.out.println(客户端连接成功);// 获取Socket对象的输入流用于读取客户端发送的数据InputStream is socket.getInputStream();// 获取Socket对象的输出流用于向客户端发送数据OutputStream os socket.getOutputStream();// 响应的内容String content Hello;// HTTP 响应的格式os.write((HTTP/1.1 200 OK\r\n).getBytes());os.write((Content-Type: text/html\r\n).getBytes());os.write((Content-Length: content.length() \r\n).getBytes());os.write(\r\n.getBytes());os.write(content.getBytes());os.flush();System.out.println(响应成功);// 关闭输出流os.close();}}
}验证 解读代码
1. 为什么不把 ServerSocket ss new ServerSocket(8080); 这行代码也加到 循环语句呢
因为这行代码是创建服务端的Socket只需要创建一次即可 2. 为什么从 Socket socket ss.accept(); 这行代码开始循环呢
这行代码是等待客户端连接建立通信通道。
我们知道服务端不是只为一个客户端服务的所以当新的用户发送连接后就需要创建一个新的通信通道 作业
1. 响应一个 HTML 页面给客户端游览器把接收到的内容进行渲染 创建一个HTML 页面创建一个方法使用IO流获取这个HTML 文件的内容把数据响应给游览器注意响应的长度 Content-Length 需要和文件的字节数一致 2. 文件的媒体类型是写死的肯定不行怎么变成动态
方案一通过判断文件后缀
方案二通过jdk自带的类去获取文件的媒体类型
方案三通过第三方插件jar读取文件判断文件媒体类型 昨天作业答案
聊天室 代码已放到页面
百度网盘