0

サーバー/クライアント通信プログラムに取り組んでいますが、問題が発生しています。クライアント側からメッセージを送信しようとすると、正しく機能しません。サーバーを初期化した後、クライアントに接続すると成功します。クライアントからメッセージを送信しようとすると、サーバーがメッセージを受信しません。クライアント接続を閉じた後、サーバーは以前に送信しようとしたすべてのメッセージを受信します。次のクラスは私が使用しているものです。

public class ServerSender extends Thread
{
    private DataOutputStream out = new DataOutputStream(socket.getOutputStream());
    private Scanner kb = new Scanner(System.in);

    public void run()
    {
        while(true)
        {
            try
            {
                out.writeUTF(kb.nextLine());
                out.flush();
            } catch(IOException e) { System.out.println("error"); }
        }
    }
}

どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

1

DataOutputStreamフラッシュするバッファがないため、診断は正しくありません。writeUTF()ただし、読み取り専用の形式を書き込むことに注意する必要がありDataInputStream.readUTF()ます。行を書き込もうとしている場合は、間違った API を持っています: try BufferedWriter.write()/.newLine().

于 2012-06-15T04:14:52.577 に答える