$out = "GET / HTTP/1.1\r\n"; //以GET的方式獲得根目錄文件,至于獲得哪個文件,要看HTTP服務器的設置多數是index.php....等,使用的 HTTP協議版本是1.1
$out .= "Host: www.example.com\r\n"; //主機URL或地址
$out .= "Connection: Close\r\n\r\n"; //響應請求后關閉鏈接。
fwrite($fp, $out); 打开www.example.com 的80 端口 写入$out 吗?
写入 $out 的类型 怎么是那种形式呢?那种形式表示什么意思?
//這個就是發送請求原語,至于怎么寫,請看HTTP協議,不是我這個菜鳥三言兩語能說明白的说 权限问题?不知道是怎么回事,还有
---------------------
HTTP/1.1 403 Forbidden Date: Tue, 10 Apr 2007 08:00:53 GMT Server: Apache/2.0.52 (Red Hat) Content-Length: 405 Connection: close Content-Type: text/html; charset=iso-8859-1
---------------------------
是什么意思???
//響應你的請求,403是禁止訪問,出現這個問題的原因比較多。。還有后面很多我就不一一解釋了。我又把 www.example.com 换成 www.xxx.com/test (www.xxx.com 的一个目录下)
在运行这个程序.
结果出现
Connection refused (111)
连接错误. 连 fsockopen 的函数都不行了.
//如果要請求某個目錄和文件應該在請求原語中設置。。
所以正確的是
$fp = fsockopen("www.xxx.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /test/ HTTP/1.1\r\n"; //这是什么意思?
$out .= "Host: www.xxx.com\r\n"; //这是什么意思?
$out .= "Connection: Close\r\n\r\n"; //这是什么意思?
$out .= "Host: www.example.com\r\n"; //主機URL或地址
$out .= "Connection: Close\r\n\r\n"; //響應請求后關閉鏈接。
fwrite($fp, $out); 打开www.example.com 的80 端口 写入$out 吗?
写入 $out 的类型 怎么是那种形式呢?那种形式表示什么意思?
//這個就是發送請求原語,至于怎么寫,請看HTTP協議,不是我這個菜鳥三言兩語能說明白的说 权限问题?不知道是怎么回事,还有
---------------------
HTTP/1.1 403 Forbidden Date: Tue, 10 Apr 2007 08:00:53 GMT Server: Apache/2.0.52 (Red Hat) Content-Length: 405 Connection: close Content-Type: text/html; charset=iso-8859-1
---------------------------
是什么意思???
//響應你的請求,403是禁止訪問,出現這個問題的原因比較多。。還有后面很多我就不一一解釋了。我又把 www.example.com 换成 www.xxx.com/test (www.xxx.com 的一个目录下)
在运行这个程序.
结果出现
Connection refused (111)
连接错误. 连 fsockopen 的函数都不行了.
//如果要請求某個目錄和文件應該在請求原語中設置。。
所以正確的是
$fp = fsockopen("www.xxx.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /test/ HTTP/1.1\r\n"; //这是什么意思?
$out .= "Host: www.xxx.com\r\n"; //这是什么意思?
$out .= "Connection: Close\r\n\r\n"; //这是什么意思?
fsockopen("www.example.com", 80, $errno, $errstr, 30);
fsockopen----------Open Internet or Unix domain socket connection
难道是打开 www.example.com 中定义的80 端口? --不好表达我的意思.在socket通讯中,不是需要一个 服务器端和一个 客户端吗?
那这段 列子说明 什么 ---客户端??
echo fgets($fp, 128); -------这个是从$fp中读出 刚才所写入的东西吧?
一下子让我明白了许多.自己来回答一下自己刚才的问题:fwrite($fp, $out); 这个是原语.我现在不问你是怎么写的.我想问它写到哪去??? ///他是http协议的机制.我还是不知道
fsockopen("www.example.com", 80, $errno, $errstr, 30);
fsockopen----------Open Internet or Unix domain socket connection
难道是打开 www.example.com 中定义的80 端口? --不好表达我的意思.===========
想当于访问了 www.example.com 的80端口在socket通讯中,不是需要一个 服务器端和一个 客户端吗?
那这段 列子说明 什么 ---客户端??--------这段 列子说明模拟http访问.
echo fgets($fp, 128); -------这个是从$fp中读出 刚才所写入的东西吧?-=-----应该可以说是.
既然是模拟http访问:我将 www.example.com 换成其他的为什么就不行了呢?我换成www.phpx.com
<?php
$fp = fsockopen("www.phpx.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.phpx.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?> 结果是 Connection refused (111)..
也就是 在$fp = fsockopen("www.phpx.com", 80, $errno, $errstr, 30); 出错.
这是什么原因呢?
将 www.phpx.com 换成ip 试试