2017-05-05 67 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