3

私はJavaでソケットベースのサーバーを書いています。クライアントがそれに接続し(Webブラウザ)、サーバーは単純なhtmlコードを送り返し、次回クライアントが再度接続したときに認識するようにCookieを設定します。PrintStream を使用して socket に書き込みを行っていますが、フラッシュが機能していません。フラッシュできる唯一の方法は、shutdownoutput または close を使用し、両方ともソケット ストリームを閉じることです。しかし、コードのいくつかの場所で何度か読み書きしているので、それは望ましくありません。何ができますか?タグからの助けを得ることができませんでした。他のバッファ付きライタークラスも試しましたが、同じ問題です。

4

2 に答える 2

4

ええ、ばかげた問題です。pstream.writeln(""); を使用するだけです。breader.readLine() は「\n」文字が見つかるまで読み取るためです。したがって、 write() は機能しません。

于 2010-02-25T08:34:18.273 に答える
0

フラッシュの代わりにこのメソッドを呼び出してみます。

public boolean checkError()
Returns:
    True if and only if this stream has encountered an IOException other than InterruptedIOException, or the setError method has been invoked

何らかの理由でフラッシュを実行できないかどうかを確認します(checkErrorは内部でフラッシュを呼び出し、エラー状態を記憶します)。

また、telnetを使用してサーバーに接続し、データがすぐに返されるかどうかを確認するか、チェックする単純なJavaクライアントソケットプログラムを作成する(ネットから1つを切り取って貼り付ける)ことも試してみる価値があります。

ブラウザが、HTMLを表示する前に、意図的に入力を待つことを決定した可能性があります(特に、HTMLが完全に形成されていない場合)。私は過去にこの問題を自分で抱えていたことを覚えているようです。

于 2010-02-24T22:02:26.977 に答える