利用ServerSocket獲取瀏覽器http請求的header

http協議是使用非常廣泛的網絡協議,作爲網站開發人員,瞭解http協議是十分重要的。

但是,我不想讀官方的http文檔,我想直接自己去一點點了解http協議,通過編寫socket與瀏覽器通信。代碼如下

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部分了。

發佈了51 篇原創文章 · 獲贊 21 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章