2017-05-05 142 views
0

顯示java.lang.NullPointerException:嘗試上的空對象引用Socket.getOutputStream()上的空onject參考

之前調用虛擬方法的java.io.OutputStream java.net.Socket.getOutputStream()'你記下這一點,我對此很新,我試圖尋找方法來解決這個問題之前,但我似乎無法找到解決方案。我希望你明白..當我運行更改監聽器時,出現此錯誤。

seekbarbrightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekbarbrightness, int progress, boolean b) { 
      if(b==true) { 
       tblumens.setText(String.valueOf(progress) + " Lumens"); 
        try { 
         socket.getOutputStream().write(String.valueOf(progress).getBytes()); 
        } catch (IOException e) { 

        } 
       } 
     } 

我在On Create方法中運行下面的代碼。

class ClientThread implements Runnable { 

    @Override 
    public void run() { 
     try { 
      InetAddress serverAddr = InetAddress.getByName(SERVER_IP); 
      check = "fail"; 
      socket = new Socket(serverAddr, SERVERPORT); 
      check = "success"; 

     } catch (UnknownHostException e1) { 
      e1.printStackTrace(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
    } 
} 

什麼問題?是否因爲我的套接字連接未正確初始化? (另外,我還沒有運行我的服務器,但是,捕獲將顯示一個錯誤不會嗎?)

我試過使用一個if socket.isConnected()函數,然後執行try和catch ,但它沒有區別..

請幫忙!我已經搜索了很多教程,並獲得了用於套接字客戶端連接的這些代碼。

+0

'socket'爲null,顯然,顯然這是因爲連接失敗。 'Socket.isConnected()'不可能有幫助,因爲你沒有'Socket'。 – EJP

+0

啊,有沒有辦法避免碰撞?就像在連接失敗之後,手機可以讓我知道通過烤麪包的連接失敗,並且當我移動我的搜索欄時不讓它崩潰? – Learning2code

+0

它*已*讓你知道。有一個'ConnectException'。否則你有一個編程錯誤。你有沒有考慮測試'socket == null'? – EJP

回答

-1

您是否接受與客戶端的套接字連接?

socket.accept(); 

我想你socket.getOutputStream()可能是setOnSeekBarChangeListener空

+0

這是*客戶;他的套接字是一個'Socket',它沒有'accept()'方法;並且'ServerSocket.accept()'的結果需要存儲在某個地方。 – EJP

+0

而'Socket.getOutputStream()'不返回null。 – EJP