成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HTTP協議請求包的Java實現

網絡 網絡管理
下面我們對HTTP協議包的Java實現進行了說明。首先我們需要了解一下整個請求連接過程是怎樣的,之后,再對這個具體的代碼進行一下分析。

前面我們對GET方法實現HTTP協議包的過程進行了簡單的介紹,不知道大家是否已經掌握了。那么現在,我們主要分析一下Java中,Socket類與ServerSocket類的協議包的鏈接發送與接收。

在Java中,通信端點由java.net.Socket類(客戶端)或java.net.ServerSocket類(服務器端)表示。應用程序通過端點向網絡發送或從網絡讀取數據。位于兩臺不同機器上的應用軟件通過網絡連接發送和接收字節流,從而實現通信。要把HTTP協議包發送給另一個應用,首先要知道對方的IP地址以及其通信端點的端口號。Socket類代表的是客戶端,它是一個連接遠程服務器應用時臨時創建的端點。

ServerSocker類代表的是服務器端,它啟動后等待來自客戶端的連接請求;一旦接收到請求,ServerSocket創建一個Socket實例來處理與該客戶端的通信。對于服務器應用,我們不知道客戶端應用什么時候會試圖連接服務器,服務器必須一直處于等待連接的狀態。

下面是ServerSocket提供了四個構造函數,常用的構造函數的的一種形式為:

public ServerSocket(int port, int backLog, InetAddress bindingAddress);

參數:port指定服務器端監聽客戶端的端口;

backlog為連接請求的最大隊列長度,一旦超越這個長度,服務器端點開始拒絕客戶端的連接請求。

bindingAddress是一個java.net.InetAddress的實例,指定綁定IP地址。

創建好ServerSocket實例之后,調用它的accept方法,要求它等待傳入的連接請求。只有出現了連接請求時,accept方法才會返回,它的返回值是一個Socket類的實例。隨后,這個Socket對象就可以用來與客戶端應用通信。

Socket類有許多構造函數,常用的為:

public Socket(String host, int port)。參數是主機名稱(IP地址或域名)和端口號。

參數host是遠程機器的名字或IP地址,port是遠程應用的端口號。

成功創建了Socket類的實例之后,我們就可以用它來發送和接收字節流形式的數據,數據一般為HTTP協議包。

要發送字節流,首先要調用Socket類的getOutputStream方法獲得一個java.io.OutputStream對象;要從連接的另一端接收字節流,首先要調用Socket類的getInputStream方法獲得一個java.io.InputStream對象。

下面的代碼片斷創建一個與本地HTTP服務器(127.0.0.1代表本地主機的IP地址)通信的Socket,發送一個HTTP協議請求包,準備接收服務器的應答。#p#

  1. Socket socket = new Socket("127.0.0.1", "80");  
  2. OutputStream ossocket.getOutputStream();  
  3. InputStreamins = socket.getInputStream();  
  4. StringBuffer sb=new StringBuffer();  
  5. sb.append("GET /index.jsp HTTP/1.1rn");//注意rn為回車換行  
  6. sb.append("Accept-Language: zh-cnrn");  
  7. sb.append("Connection: Keep-Alivern");  
  8. sb.append("Host: 192.168.0.106rn");  
  9. sb.append("Content-Length: 37rn");  
  10. sb.append("rn");  
  11. sb.append("userName=new_andy&password=new_andyrn");  
  12. sb.append("rn");  
  13. //向Web服務器發送一個HTTP請求包  
  14. os.write(sb.toString().getBytes());  
  15. 服務器端的代碼在大致結構為:  
  16. while (!shutdown) {  
  17. Socket socket = null;  
  18. try {socket = serverSocket.accept(); //等待客戶以送HTTP協議請求包  
  19. // 創建HTTP請求包處理線程  
  20. RequestThread request = new RequestThread(socket);  
  21. request.start();  
  22. if(shutdown) System.exit(0);  
  23. }  
  24. catch (Exception e) {  
  25. e.printStackTrace();  
  26. } } 

RequestThread線程分析HTTP請求包,跟根據請求包內容在服務端生成一個HTTP應答包。下一節說明怎樣分析HTTP包。

InputStreaminput = socket.getInputStream();//從此字節數據流獲得HTTP請求包內容。

OutputStream output= socket.getOutputStream(); //向此字節流寫入HTTP協議應答包內容。

責任編輯:佟健 來源: IT專家網
相關推薦

2010-06-29 13:18:31

HTTP協議

2010-06-29 13:35:39

HTTP協議

2020-06-17 21:39:11

HTTP協議服務器

2020-10-20 14:01:16

HTTP

2011-08-09 14:08:51

iPhoneHTTP請求協議

2019-04-08 15:11:12

HTTP協議Web

2011-08-17 10:16:35

iPhone應用HTTP請求協議

2018-04-17 16:29:24

Java面試HTTP

2014-10-22 09:36:41

TCPIP

2009-07-28 15:29:03

實現HTTP請求ASP.NET

2019-08-01 15:25:17

Http服務器協議

2017-05-26 10:35:13

前端HTTP

2015-10-09 15:07:02

HTTP網絡協議

2021-03-05 11:20:24

HTTPWebshellWeb服務器

2018-10-18 10:05:43

HTTP網絡協議TCP

2020-09-24 09:43:59

Http協議options請求

2023-07-28 14:32:33

QtPOST請求

2022-04-08 08:26:03

JavaHTTP請求

2025-02-04 09:58:08

2015-09-15 13:48:01

網絡協議HTTP Client
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 最新高清无码专区 | 青青久视频| 日韩欧美三级电影在线观看 | 成人综合视频在线 | 日本不卡一区二区三区 | 久久99久久99精品免视看婷婷 | 在线观看中文字幕一区二区 | 一区二区三区亚洲 | 精精国产xxxx视频在线播放7 | 欧洲视频一区 | 精品日韩一区 | 欧美国产精品一区二区三区 | 亚洲高清视频在线观看 | 殴美成人在线视频 | 在线视频一区二区三区 | 99视频精品 | 天天干在线播放 | 久草网在线视频 | 久久久精品一区二区三区四季av | 91视频三区| 日本高清视频在线播放 | 成人a网 | 久久99精品久久久久蜜桃tv | aaa在线| 精品欧美一区二区在线观看欧美熟 | 男人视频网站 | 欧洲视频一区二区 | 久久久久久久久毛片 | 欧美无乱码久久久免费午夜一区 | 欧州一区二区三区 | 国产视频2021| 日韩精品一区二区三区四区 | 成人精品啪啪欧美成 | 精品国产一区二区三区久久影院 | 中文字幕专区 | 欧美xxxx日本 | 高清国产午夜精品久久久久久 | 国产韩国精品一区二区三区 | 国产精品久久精品 | 久久亚洲一区二区三区四区 | 色又黄又爽网站www久久 |