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/


搞定。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值