2

对于类,我正在创建一个简单的客户端/服务器。客户端打开一个 jframe,用户在其中输入主机和端口号。如果建立了连接,则会打开另一个具有 keylistener 的 jframe。在客户端输入的内容会显示在服务器的 jtextarea 中。我能够在客户端和服务器之间建立连接,但在此之后我立即遇到空指针异常。我假设我应该在我的服务器中使用除 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(); 行命中空指针异常

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 回答