利用ServerSocket获取浏览器http协议内容

来源:互联网 发布:linux防火墙配置详解 编辑:程序博客网 时间:2024/06/06 14:27

http协议是使用非常广泛的网络协议,作为网站开发人员,了解http协议是十分重要的。

但是,我不想读官方的http文档,我想直接自己去一点点了解http协议,通过编写socket与浏览器通信。


第一步:获取http header

import java.io.DataOutputStream;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 server = new ServerSocket(2222);while(true){try{Socket client = server.accept();OutputStream out = client.getOutputStream();DataOutputStream outStream = new DataOutputStream(client.getOutputStream());outStream.write("Hello".getBytes());InputStream in = client.getInputStream();byte[] buf = new byte[1024];in.read(buf);in.close();System.out.println("request from client " + client.getInetAddress().getHostAddress());System.out.println(new String(buf));client.close();}catch(Exception e){e.printStackTrace();}}}}

结果如下:

request from client 127.0.0.1
GET /favicon.ico HTTP/1.1
Host: 127.0.0.1:2222
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1622.7 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: csrftoken=4q6evAi7r0Y72QnhEwXQn8WZgZQr8JTb


从第二行开始就是http协议的header部分了。

原创粉丝点击