fwrite($fp, $out); //发送数据包 // $out数据格式有问题
手册上的例子:
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
其中
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
这三行是http get的请求头部,需要加上。
手册上的例子:
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
其中
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
这三行是http get的请求头部,需要加上。
Parse error: parse error, unexpected T_VARIABLE in caxun_get.php on line 22
第22行代码如下:
20:$out ="GET/HTTP/1.1\r\n";
21:$out.="Host:".$hostname."\r\n";
22:$out.="Connection:Close\r\n\r\n";
23:$out.= "@|200|0|.$userid.|&";发生这样的情况,会不会是无法访问前置机的端口呢!
那肯定一个是php4,一个是php5了。
报错的一定是php5
$errno = "8866";
$errstr = "不能打开主机端口";
$userid = $userID; //户号$fp = fsockopen($hostname, 8866, $errno, $errstr, 30);
echo $fp;if (!$fp) {
echo "$errstr ($errno)<br />\n";
}else{
$out="@|200|0|".$userid."|&";
echo $out;
@fwrite($fp,$out); //发送数据包
while (!feof($fp)) {
$return_str = fgets($fp,1024);
}
fclose($fp);
}echo $return_str;运行的时候,前置机已经接收到数据包了,但我一直得不到由前置机返回的数据包,不知道怎么回事!我很想知道,如果通过上面的代码发送请求过去,得到数据包是通过什么端口获取的,因为前置机返回数据包是通过发送过去的端口返回的(即8866端口返回数据),会不会是这个原因!