2012-02-07 3 views
0

こんにちは私は非常に単純なJavaサーバー上でテストしてクライアントアプリケーションが動作しているかどうかをテストしたい。私のクライアントは、ほぼ毎秒文字列を送ります。私の考えは、サーバーが文字列を受信すると、文字列をEclipseコンソールに表示するということです。しかし、問題は、単純なJavaサーバーが最初の文字列だけを出力することです。以下は、私がsite送信された最初の文字列のみを表示する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サーバは、起動ごとに、文字列のインスタンスのみを表示できるJavaサーバですか?はいの場合、毎秒送信されるすべての文字列を表示または表示するにはどうすればよいですか?

+0

クライアントが毎回接続を終了する場合は、これが必要です。 – Mat

+0

はい、クライアントはほぼ毎秒閉じて、ほぼ毎秒接続して送信しようとします。私は単純なJavaサーバーテスターで何をすべきですか? – coollearner

答えて

0

問題は、バッファを1回だけ読み取ることです。サーバーはクライアント行を待ち、読み込み時に 'msg'がヌルであるため実行を終了します。毎秒または毎分、または1時間ごとに読み取るプロセスが必要です。つまり、スレッドを使用しています。

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

+0

ヘルプとコメントをありがとう。私は、リンクhttp://pguides.net/java/tcp-client-server-chat の他のコードを使用し、それは今働いた。 – coollearner

関連する問題