0

こんにちは。非常に単純なJavaサーバーでテストして、クライアントアプリが機能しているかどうかをテストしたいと思います。私のクライアントはほぼ毎秒文字列を送信します。私の考えでは、サーバーは文字列を受信すると、Eclipseコンソールに文字列を表示します。しかし、問題は、単純なJavaサーバーが最初の文字列のみを出力することです。以下は私がサイトから入手した単純なJavaサーバーです

  package serverjava;

/* ChatServer.java */
import java.net.ServerSocket;
import java.net.Socket;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class serverjava {
    private static int port = 1234; /* port the server listens on */

    public static void main (String[] args) throws IOException {
        ServerSocket server = null;
        try {
            server = new ServerSocket(port); /* start listening on the port */
        } catch (IOException e) {
            System.err.println("Could not listen on port: " + port);
            System.err.println(e);
            System.exit(1);
        }

        Socket client = null;
        try {
            client = server.accept();
        } catch (IOException e) {
            System.err.println("Accept failed.");
            System.err.println(e);
            System.exit(1);
        }

        /* obtain an input stream to the client */
        BufferedReader in = new BufferedReader(new InputStreamReader(
                    client.getInputStream()));

        String msg;
        /* loop reading lines from the client and display them */
        while ((msg = in.readLine()) != null) {
            System.out.println("Client says: " + msg);
        }
    }
}

Javaサーバーは、起動ごとに文字列のインスタンスのみを表示できますか?はいの場合、毎秒送信されるすべての文字列をコンソールに印刷または表示するにはどうすればよいですか?

4

1 に答える 1

0

あなたが持っている問題はあなたが一度だけバッファを読むことです。サーバーはクライアント行を待機し、それらを読み取ると、「msg」がnullであるため、実行を終了します。1秒、1分、または1時間ごとに読み取るプロセスが必要です...つまり、THREADSを使用します。

気をつけて!マシンが過負荷になるため、そのようなもののwhile(true)構造を使用しないでください。

于 2012-02-07T10:03:15.363 に答える