web服務(wù)器大家都會(huì)用,可是它的實(shí)現(xiàn)原理是到底如何呢,其實(shí)只要讀一下http協(xié)議,大家基本也能開發(fā)出一個(gè)簡單的web服務(wù)器出來了。
web請求分為如下幾步
1. 瀏覽器向服務(wù)建立TCP/IP連接,Java中通過java.net.Socket實(shí)現(xiàn)
2. Web瀏覽器向Web服務(wù)器發(fā)送請求命令。通過Socket的輸出流向服務(wù)器寫如下信息:
GET /uri HTTP/1.1,很顯示第一部分為請求的方法,第二部分為請求的URI,第三部分為請求的協(xié)議
3. Web瀏覽器發(fā)送請求頭信息。這部分包括瀏覽器的版本信息,接受的格式、編碼等,還有非常有用的一個(gè)數(shù)據(jù)Cookie也是在這里發(fā)送的。
4. 頭信息發(fā)送完后,發(fā)送一個(gè)空格表示結(jié)束,如果是post請求,則繼續(xù)發(fā)送Post正文。
5. Web服務(wù)器做出應(yīng)答,如返回"HTTP/1.1 200 OK",表示請求成功,或者返回404,500等狀態(tài)信息表示找不到頁面或服務(wù)器錯(cuò)誤。
6. Web服務(wù)器發(fā)送應(yīng)答頭信息,這部分表示了返回的內(nèi)容類型(如是gif還是exe還是html等),返回的數(shù)據(jù)的編碼,長度,當(dāng)然還有Cookie(通過set-Cookie來發(fā)送)
7. 在發(fā)送完應(yīng)答頭后,則發(fā)送一個(gè)空行。如果有響應(yīng)正文,則在后面繼續(xù)發(fā)送響應(yīng)內(nèi)容。
8. 關(guān)閉TCP/IP連接
以下代碼簡單的模擬了這一過程。
客戶端代碼:

































服務(wù)器代碼如下:






































































