http://admin.zxtnc.com:8002/我想读取这个页面的内容<?
$str = @readfile("http://admin.zxtnc.com:8002/");
echo $str;?>竟然读不出来

解决方案 »

  1.   

    我在浏览器里打开那个url,分析了一下,发现它并没有完成HTTP会话,
    一共9个包,1,2,3是TCP3次握手,4是浏览器发送了GET请求,5就是那个主机回应,
    但是那个主机回应的时候,没有HTTP头,所以当作纯TCP stream处理了,
    它发送过来的数据,就只有data,没有header,所以浏览器认为有错误,
    于是浏览器发送了FIN终止TCP连接,也就是第6个包
    7是服务器端确认后,8是服务器端发送FIN,9是这边确认,整个TCP完成建立连接用了3个分节,终止连接用了4个分节,承载实际数据的两个分节,没有完成HTTP会话
    所以readfile会报错,去掉@抑制符号,应该可以看到第5个数据包的内容
      

  2.   


    $fp = fsockopen('admin.zxtnc.com','8002',$errno,$errstr,1);
    if(!$fp) echo $errstr;
    fwrite($fp,"\r\n");
    while (!feof($fp)) {
    $content .= fgets($fp, 128);
    }
    echo $content;
    fclose($fp);
      

  3.   


    约定的接口是怎么样子的?如果是HTTP方式,不是GET就是POST,构造http header,发送过去,并发送content
    http协议是要遵照一定格式的,不妨搜一下常见的用法,配合浏览器抓包分析 
      

  4.   

    get 过去 
    /s?a=123&c=123这样怎么写?
      

  5.   

    服务端开的socket server,既然不是http就需要协商好交互协议,说穿了就是协商好client端怎么请求,server端怎么回复。