2012-11-28 374 views
2

對於我正在創建一個簡單的客戶端/服務器的類。客戶端打開一個jframe,用戶輸入主機和端口號。如果建立連接,則打開另一個具有keylistener的jframe。服務器的jtextarea中顯示客戶端輸入的內容。我能夠在客戶端和服務器之間建立連接,但在此之後,我立即遇到空指針異常。我想我應該在我的服務器中使用比bufferedreader更多的東西,或者如果我可以阻止服務器讀取內容,直到實際輸入內容爲止?還是我在做其他事情完全錯誤?任何幫助將不勝感激,相關的代碼如下。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(); 

     } 
    } 

編輯:我對之前不包括此道歉,但 字符串行= tc.lnr.readLine(); 線打空指針異常

+0

哪條線打下面的您正在使用的實例變量

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

空指針異常? –

回答

1

在你的主你必須改變

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

this.lnr = new BufferedReader(isr); 
+0

謝謝Bhesh。我很感激。我會確保在允許的情況下接受答案。 – Nolan

+0

不客氣。 –