2

私は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);
}

このコードは、しばらくしなくてもハングします。

何が間違っている可能性がありますか?

4

1 に答える 1

0

サーバーは本当にバイトを送信しますか?

fgets($fp, 1024)

これらの条件のいずれかが発生した場合、を返します。

-EOFまたは改行を受信しました

-読み取り1024-1バイト

または反対側が接続を閉じました

これらの条件が発生しない場合、呼び出しはブロックされます。

1024を小さい数値に変更したり、fgetc()を使用したりするのはどうですか?

于 2011-04-27T18:32:59.577 に答える