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的请求头部,需要加上。

解决方案 »

  1.   

    不行,我试过了,还是不行,并且它报一下错误
    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.|&";发生这样的情况,会不会是无法访问前置机的端口呢!
      

  2.   

    不同的服务器?
    那肯定一个是php4,一个是php5了。
    报错的一定是php5
      

  3.   

    上面的问题我已经解决了,是因为我在代码了加了些不应该有的字符,造成程序出错,现在我写的最终程序是:$hostname = "1.1.1.250";
    $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端口返回数据),会不会是这个原因!