2

我在 JAVA 中有服务器和客户端应用程序,这台服务器有什么用。乍一看,这没有问题——JAVAsocket.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);
}

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

有什么问题?

4

1 回答 1

0

您的服务器真的发送字节吗?

fgets($fp, 1024)

如果发生以下情况之一,则返回:

- 收到 EOF 或换行符

- 读取 1024-1 字节

远端关闭连接

如果这些条件没有发生,调用会阻塞。

将 1024 更改为较小的数字或使用 fgetc() 怎么样?

于 2011-04-27T18:32:59.577 回答