dt2015 2010-09-15 13:38
浏览 75
已采纳

检测HTTP数据包的结尾

I have to write a PHP script that works as a client against another HTTP Server. This Server ignores the HTTP Connection:Close header and keeps the TCP connection open unless it is closed by the client. And here is my dilemma. I (the client) have to deciede when a HTTP request/response has finished and then close the connection. Simply use:

$data = file_get_contents($url);

.. won't work, as file_get_contents returns only if the connection timeout (default 30 seconds) has reached.

So I have to write my own read - loop like this (pseudo code):

$sock = fsockopen(...);
$data = '';
while($line = fgets($sock)) {
    $data .= $line;
    if(http_package_recieved()) {
        break;
    }
}

Unfortunately there is no Content-Length header in the response. My question is, how the function

http_package_recieved()

... should look like.

Greets Thorsten

  • 写回答

5条回答 默认 最新

  • dongzhi4498 2010-09-15 13:48
    关注

    If it doesn't close the connection and it doesn't tell you the total length of the response, you have no way to know whether all the data has been received.

    You could specify a maximum time interval between packets, but that won't be reliable.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集