执行以下代码, 可以帮助理解fsockopen() 函数作用
class test{
public function tempTest()
{
// Open a socket
if (!($fp = fsockopen('localhost', 80, $errno, $errstr, 15))) {
die("无法连接到主机");
}
// Set timout to 1 second
if (!stream_set_timeout($fp, 1)) die("无法设置超时时间");
// Fetch first line of response and echo it
var_dump(fgets($fp));//此时还没有数据, 将返回false
// Send data to server
echo "开始写入数据";
fwrite($fp, "C01 CAPABILITY\r\n");//向打开的通道发送数据, 并等待服务端返回数据
echo " 写入数据结束\r\n";
var_dump('********', fgets($fp), '*******');//fgets()函数: 从 file 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(要看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。若失败,则返回 false。
// Keep fetching lines until response code is correct
while ($line = fgets($fp)) {//等待服务端返回数据, 并接收数据
var_dump($line);
$line = preg_split('/\s+/', $line, 0, PREG_SPLIT_NO_EMPTY);
$code = $line[0];
if (strtoupper($code) == 'C01') {
break;
}
}
echo "程序运行结束!";
}
}
$m = new test();
$m->tempTest();