一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 判斷Keep-Alive模式的HTTP請求的結束的實現代碼

判斷Keep-Alive模式的HTTP請求的結束的實現代碼

2019-12-09 14:08PHP教程網 PHP教程

在使用短連接方式時,每個HTTP請求對應一個TCP連接,請求完成后連接立即斷開,服務器返回EOF。

所以根據EOF就可判斷一次請求的結束,下面的代碼(PHP)很常見: 

復制代碼代碼如下:


// $fp是由fsockopen()產生的句柄 
while(!feof($fp)) { 
echo fgets($fp); 


(注:短連接模式是在頭部用”Connection: close”標示,長連接用”Connection: keep-alive”標示。目前HTTP/1.0默認使用短連接,HTTP/1.1默認使用長連接。) 
而長連接(也稱持久連接)模式的HTTP在發送完數據后服務器并不斷開連接,而是留著下一次HTTP請求時使用,所以長連接的好處是顯而易見的,通過共用一個TCP連接來節省以后請求時建立/斷開連接的開銷。而EOF是直到這個TCP連接結束(超時或出錯)時才會被發送,所以我們就不能使用上面的辦法來判斷一次HTTP請求的結束了。這也是使用長連接時都會遇到的一個問題。目前判斷的方法主要有兩種: 
(1) 根據頭中的Content-Length字段。這個字段標明了正文的長度,我們可以以接收完指定長度的字符為判斷結束的依據。 
(2) 在沒有Content-Length時,根據Transfer-Encoding。有些時候服務器無法確定正文的大小,因為正文可能是動態產生的,所以就不會提供Content-Length了,而是采用chunk編碼來一塊一塊地發送正文。每個chunk塊由頭部和正文兩部分組成,頭部中由一個16進制數字指定了正文的長度;最后由一個長度為0的chunk塊來表示整個HTTP正文的結束。 
下面我用PHP實現了有Content-Length時的判斷方式: 
1. 獲得Content-Length值 

復制代碼代碼如下:


$length = 0; 
$line = ''; 
while($line !== "\r\n") { 
$line = fgets($fp); 
if(substr($line, 0, 15) === 'Content-Length:') { 
$length = intval(substr($line, 16)); 


2. 獲得正文 

復制代碼代碼如下:


$sum = 0; 
while($sum < $length) { 
$line = fgets($fp); 
$sum += strlen($line); 
echo $line; 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产愉拍| 欧美特黄一级大片 | 亚洲国产精品嫩草影院永久 | 亚洲高清国产拍精品动图 | 国产在线一区二区杨幂 | 久久综合中文字幕佐佐木希 | 婷婷九月 | 国产好深好硬好爽我还要视频 | 大象视频污 | 久久99re2热在线播放7 | 人人斗地主 | 色综合久久日韩国产 | 91制片厂制作果冻传媒2021 | 黄瓜视频黄 | 7777色鬼xxxx欧美色夫 | 亚洲日本中文字幕在线2022 | 1769最新资源站 | 免费毛片大全 | 91最新高端约会系列178 | 日韩 欧美 国产 亚洲 中文 | 国产精品资源站 | 香蕉人人超人人超碰超国产 | 亚洲国产区中文在线观看 | 人禽l交视频在线播放 视频 | 亚洲福利二区 | 午夜国产精品视频 | 欧美se图| 星空无限传媒xk8129 | 日本在线亚州精品视频在线 | 青青久在线视频免费观看 | 青草久久伊人 | 猫咪色网 | 国产精品久久久久久搜索 | 成年人视频免费在线播放 | 手机看片自拍自自拍日韩免费 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 日本免费高清在线观看播放 | 国色天香 社区视频 | 国产视频中文字幕 | 欧美在线成人免费国产 | 91av最新地址 |