今天公司有同事讓我給他講一講http..然后自己寫了一個示例代碼,這如果都看不懂.那我也沒辦法了....
?
1 <?php 2 3 //這里服務器以apache舉例.nginx.iis.他們實際上處理方式的都是同理 4 //申明http鏈接的數據包 注意最后面有兩個換號.這是告訴apache.數據包的結束,如果后面沒有兩個換號.apache會以為你請求的數據還沒有結束. 5 //這里的GET .說明是用get方式訪問.如果是post.就是以post方式訪問 post方式訪問的時候.會在兩個換號之后拼接post的數據 6 //這里GET后面跟著的/是訪問的路徑.. 如果需要訪問aaaa.php那么在/后面加上aaaa.php,就可以了 7 //Host 說明我是告訴apache我要訪問的是那個域名 8 //當然還會有其他的屬性..其他的屬性baidu一下基本就可以了... 9 $http = <<<PCNTL_ENFILE 10 GET / HTTP/1.1 11 Host: www.ip138.com 12 13 14 PCNTL_ENFILE; 15 16 17 //和www.ip186.com的80端口建立鏈接 并且返回鏈接資源 18 $sock = pfsockopen("www.ip138.com", 80); 19 20 //向ip138的鏈接資源發送http數據包 等于給ip138說的話 21 fwrite($sock, $http); 22 //給服務器說了話之后.服務器內部怎么處理的.http是不需要管的.然后需要管的就是回復器答復的話 23 //發送完數據包之后.讀取ip138的鏈接資源返回的數據 .讀取的數據長度為99999,. 等于聽ip138回復的99999個字 24 $pack = fread($sock, 99999); 25 26 //將讀取的數據分為頭部.和主題內容 頭部是給瀏覽器的說的話. 主題內容就是html代碼 27 //比如設置的cookie就是在頭部... 28 //這里也是用的兩個回車換號來區別的... 29 list($header, $html) = explode("\r\n\r\n", $pack, 2); 30 //打印讓瀏覽器處理的數據 31 print_r($header); 32 33 //打印html代碼. 34 print_r($html);
?
?