版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27605885/article/details/79552546
我们只浏览器发起一个http请求,后台对应服务会接收并且处理该请求。
那么它是怎么实现的呢?也就是底层原理是什么?
我们都知道http协议的底层是基于TCP/IP协议的,
而TCP/IP协议的实现形式就是Socket。
所以理论上,后台写一个Socket服务端是可以和浏览器交互的,
而http请求是有固定的格式的,发送请求会发送一个请求头消息,还有一些请求参数之类的,
当然这些工作浏览器帮我们做了。
这里我们写一个Socket服务端实现与浏览器的交互。
直接看代码
public static void main(String[] args) throws Exception{
ServerSocket server = new ServerSocket(9898);
while(true){
Socket socket = server.accept();
InputStreamReader r = new InputStreamReader(socket.getInputStream());
BufferedReader br = new BufferedReader(r);
String readLine = br.readLine();
while(readLine != null && !readLine.equals("")){
System.out.println("获取到数据:" + readLine);
readLine = br.readLine();
}
String html = "http/1.1 200 ok\n"
+"\n\n"
+"1234服务端。。。。";
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.println(html);
pw.close();
}
}
这里:html是拼接的,包括响应头消息+响应体,
浏览器是按照这个来解析的。
浏览器中输入:http://localhost:9898/
搞定。