套接字PHP挂起fgets

时间:2011-04-27 17:58:56

标签: php sockets hang fgets

我在JAVA中有服务器和客户端应用程序,使用此服务器。初看起来没有问题 - JAVA使用socket.getInputStream()来接收数据,使用socket.getOutputStream()来发送数据。

我需要在PHP上编写相同的客户端。手册中的所有示例都没有帮助我。我可以成功连接到服务器,但当我尝试阅读的东西 - 页面挂起。例如:

$fp = stream_socket_client($addr, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, $data);
    while (!feof($fp)) {
        var_dump(fgets($fp, 1024));
    }
    fclose($fp);
}

此代码即使没有时间也会挂起。

有什么不对?

1 个答案:

答案 0 :(得分:0)

您的服务器是否确实发送了字节?

fgets($fp, 1024)
如果出现以下情况之一,则

返回:

- 收到EOF或换行

- 读取1024-1字节

远方关闭连接

如果没有发生这些情况,则呼叫阻止。

如何将1024更改为较低的数字或使用fgetc()?