天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

所以根據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;
}

php技術判斷Keep-Alive模式的HTTP請求的結束的實現代碼,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲免费在线播放 | 红桃传媒少妇人妻网站无码抽插 | 亚洲国产成人99精品激情在线 | 有码 亚洲 制服 国产 在线 | 99热久久这里只有精品视频 | 日本少妇无码精品12P | YELLOW视频直播在线观看高清 | 久在线观看福利视频 | 成人精品视频在线观看 | 久久国产精品永久免费网站 | 黄页网站免费视频大全9 | 久久99视频免费 | 国产午夜在线视频 | 香蕉eeww99国产精选播放 | 九九热久久只有精品2 | 成人小视频在线免费观看 | 久久两性视频 | 国产AV精品久久久毛片 | 高傲教师麻麻被同学调教123 | 亚洲精品福利一区二区在线观看 | 久久99精品AV99果冻传媒 | 人妻中文字幕无码久久AV爆 | 啪啪做羞羞事小黄文 | 99久久婷婷国产麻豆精品电影 | 韩国女人高潮嗷嗷叫视频 | 国产精品ⅴ视频免费观看 | 国产ZZJJZZJJ视频全免费 | 三级黄色一级视频 | 久久久免费观成人影院 | 粉嫩无套白浆第一次jk | 欧美深夜0000XXXX疯狂 | 亚洲综合AV色婷婷五月蜜臀 | 亚洲综合色婷婷在线影院 | 高肉黄暴NP文公交车 | 青青青久久 | 背着老婆爆操性感小姨子 | 日日噜噜噜夜夜爽爽狠狠 | 免费人成视频19674不收费 | 伊人久久大香网 | 国精产品一区二区三区 | 亚洲AV蜜桃永久无码精品红樱桃 |