2

クラスでは、単純なクライアント/サーバーを作成しています。クライアントはjframeを開き、ユーザーがホストとポート番号を入力します。接続が確立されると、キーリスナーを持つ別のjframeが開かれます。クライアント側で入力された内容は、サーバーのjtextareaに表示されます。クライアントとサーバーを接続することはできますが、この直後にnullポインター例外が発生します。サーバーでbufferedreader以外のものを使用する必要があると思いますか、それとも実際に何かが入力されるまでサーバーの読み取りを停止できるでしょうか?それとも私は完全に間違ったことをしていますか?助けていただければ幸いです。関連するコードは以下のとおりです。

public class TypeServer extends JPanel {

BufferedReader lnr;


public TypeServer(Socket soc) throws IOException {

    InputStream inStream = soc.getInputStream();
    InputStreamReader isr = new InputStreamReader(inStream);
    BufferedReader lnr = new BufferedReader(isr);


}
//below is in the main function
try {
        ServerSocket srv = new ServerSocket(5555);
        Socket soc=srv.accept();
        while (true) {


            // Create server
            TypeServer tc = new TypeServer(soc);
            String line=tc.lnr.readLine();
            textArea.append(line);
            srv.close();
            soc.close();

        }
    }

編集:以前にこれを含めなかったことをお詫びしますが、String line = tc.lnr.readLine(); 行がnullポインタ例外にヒットする

4

1 に答える 1

1

メインでは、インスタンス変数を使用しています

String line=tc.lnr.readLine(); //lnr is not initialized

以下を変更する必要があります

BufferedReader lnr = new BufferedReader(isr); //initializing the local variable

this.lnr = new BufferedReader(isr);
于 2012-11-28T03:02:59.437 に答える