我有这样一个需求:
先利用socket_connect( )建立TCP连接,
再用socket_write( )发送HTTP请求,
然后用socket_read( )读取HTTP响应数据。
代码如下:$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, ‘192.168.2.103’, 80);$buffer = "GET /index.html HTTP/1.1\r\n";
$buffer .= "Host: 192.168.2.103\r\n";
$buffer .= "User-Agent: Firefox/54.0\r\n";
$buffer .= "\r\n";socket_write($sock, $buffer, strlen($buffer));while(true) {
      if(false === ($str_recv = socket_read($sock, 1024))) {
        $errorcode = socket_last_error($sock);
        $errormsg = socket_strerror($errorcode);
        exit("{$errormsg}\n");
      }
      elseif($str_recv !== '') {
        echo strlen($str_recv) . "\n";
      }
}我利用while循环读取HTTP的响应数据,每次读取1KB,那么有个问题:读几次才能把HTTP响应数据读完?
我想在读取完HTTP响应数据后立刻关闭TCP连接,即调用socket_close( )关闭socket。
显然,目前的代码是个死循环,一直在调用socket_read( )读取数据,即使TCP连接的接收缓冲区已经没有数据了。
如何做才能在读取完所有的HTTP响应数据后立刻跳出while循环?
求指教!