Socket编程之实现浏览器与Socket的交互

我们只浏览器发起一个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/

Socket编程之实现浏览器与Socket的交互_第1张图片

搞定。

你可能感兴趣的:(网络编程,java)