错误日志:Attempt to invoke virtual method 'java.io.OutputStream java.net.Socket.getOutputStream()' on a null object reference
        at com.example.myapplication.Main2Activity$4.run(Main2Activity.java:127)
错误部分代码:
new Thread() {
            @Override
            public void run() {
                try {
                    // socket.getInputStream()
                    DataOutputStream writer = new DataOutputStream(mSocket.getOutputStream());
                    writer.writeUTF(str); // 写一个UTF-8的信息
                    Log.d("Main2Activity","发送消息");
                    System.out.println("发送消息");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
求大佬帮助 !!

解决方案 »

  1.   

    mSocket没初始化。
      

  2.   

    你的mSocket对象生成了没?
      

  3.   

    写了这两行
    mSocket = new Socket(et_ip.getText().toString(), 1989);private Socket mSocket;
      

  4.   

    写了这两行
    mSocket = new Socket(et_ip.getText().toString(), 1989);private Socket mSocket;
      

  5.   

    先初始化再连接否则mSocket 是null
      

  6.   

    正常来说你发送前应该先判断socket对象是否为null且socket是否连接上了 ,如果不是则先重新初始化socket
      

  7.   

    这种debug不就看到了,你的mSocket肯定是null了,空指针异常在新手博客中有说明https://blog.csdn.net/weimingjue/article/details/87921494还有些基础问题可以看看
      

  8.   

    将这个方法writer.writeUTF(str); 
    换成这个试一下 writer.write(str).getBytes("utf-8"));