Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建新线程时出现空指针异常_Java_Android_Multithreading_Nullpointerexception_Udp - Fatal编程技术网

Java 创建新线程时出现空指针异常

Java 创建新线程时出现空指针异常,java,android,multithreading,nullpointerexception,udp,Java,Android,Multithreading,Nullpointerexception,Udp,我有一个用thread扩展的thread类,我试图在其他类中创建该类的对象并从那里开始线程,当按下按钮时将创建线程,但应用程序只运行一次,我创建线程的主类是: broadcastobject=new broadcast(messages); broadcastobject.start(); 我的线程类是: public class broadcast extends Thread{ private DatagramSocket socket; String str; private sta

我有一个用thread扩展的thread类,我试图在其他类中创建该类的对象并从那里开始线程,当按下按钮时将创建线程,但应用程序只运行一次,我创建线程的主类是:

broadcastobject=new broadcast(messages);
broadcastobject.start();
我的线程类是:

public class broadcast  extends Thread{

private DatagramSocket socket;
String str;
private static final int TIMEOUT_MS = 10;
WifiManager mWifi;
EditText et;
DatagramPacket packet;
Button bt;
private static final int SERVERPORT = 11111;
private static final String SERVER_IP = "192.168.1.255";


public  broadcast(String msg){
    str=msg;
}

@Override
    public void run() {


        try {
            socket = new DatagramSocket(SERVERPORT);

            socket.setBroadcast(true);
       //               socket.setSoTimeout(TIMEOUT_MS);
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

            InetAddress serverAddr = null;
            try {


                serverAddr = InetAddress.getByName(SERVER_IP);


            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

         packet = new DatagramPacket(str.getBytes(), str.length(),serverAddr,SERVERPORT);

            try {

                    socket.send(packet);

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    } 

    }
我的日志猫是:

     09-02 15:46:47.603: W/System.err(1348): java.net.BindException: bind failed: EADDRINUSE (Address already in use)
     09-02 15:46:47.613: W/System.err(1348):    at libcore.io.IoBridge.bind(IoBridge.java:89)
   09-02 15:46:47.613: W/System.err(1348):  at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:68)
  09-02 15:46:47.643: W/System.err(1348):   at java.net.DatagramSocket.createSocket(DatagramSocket.java:133)
  09-02 15:46:47.703: W/System.err(1348):   at java.net.DatagramSocket.<init>(DatagramSocket.java:78)
   09-02 15:46:47.703: W/System.err(1348):  at soft.b.peopleassist.broadcast.run(broadcast.java:65)
  09-02 15:46:47.703: W/System.err(1348): Caused by: libcore.io.ErrnoException: bind failed: EADDRINUSE (Address already in use)
  09-02 15:46:47.703: W/System.err(1348):   at libcore.io.Posix.bind(Native Method)
   09-02 15:46:47.772: W/System.err(1348):  at libcore.io.ForwardingOs.bind(ForwardingOs.java:39)
   09-02 15:46:47.772: W/System.err(1348):  at libcore.io.IoBridge.bind(IoBridge.java:87)
  09-02 15:46:47.772: W/System.err(1348):   ... 4 more
  09-02 15:46:47.793: W/dalvikvm(1348): threadid=11: thread exiting with uncaught exception (group=0x409961f8)
09-02 15:46:47.823: E/AndroidRuntime(1348): FATAL EXCEPTION: Thread-79
 09-02 15:46:47.823: E/AndroidRuntime(1348): java.lang.NullPointerException
 09-02 15:46:47.823: E/AndroidRuntime(1348):    at soft.b.peopleassist.broadcast.run(broadcast.java:90)
  09-02 15:47:21.832: I/Process(1348): Sending signal. PID: 1348 SIG: 9
09-02 15:46:47.603:W/System.err(1348):java.net.BindException:bind失败:EADDRINUSE(地址已在使用中)
09-02 15:46:47.613:W/System.err(1348):位于libcore.io.IoBridge.bind(IoBridge.java:89)
09-02 15:46:47.613:W/System.err(1348):位于java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:68)
09-02 15:46:47.643:W/System.err(1348):位于java.net.DatagramSocket.createSocket(DatagramSocket.java:133)
09-02 15:46:47.703:W/System.err(1348):位于java.net.DatagramSocket(DatagramSocket.java:78)
09-02 15:46:47.703:W/System.err(1348):在soft.b.peoplesist.broadcast.run(broadcast.java:65)
09-02 15:46:47.703:W/System.err(1348):原因:libcore.io.ErrnoException:bind失败:EADDRINUSE(地址已在使用中)
09-02 15:46:47.703:W/System.err(1348):位于libcore.io.Posix.bind(本机方法)
09-02 15:46:47.772:W/System.err(1348):位于libcore.io.ForwardingOs.bind(ForwardingOs.java:39)
09-02 15:46:47.772:W/System.err(1348):位于libcore.io.IoBridge.bind(IoBridge.java:87)
09-02 15:46:47.772:W/系统错误(1348):。。。4更多
09-02 15:46:47.793:W/dalvikvm(1348):threadid=11:线程以未捕获异常退出(组=0x409961f8)
09-02 15:46:47.823:E/AndroidRuntime(1348):致命异常:线程79
09-02 15:46:47.823:E/AndroidRuntime(1348):java.lang.NullPointerException
09-02 15:46:47.823:E/AndroidRuntime(1348):在soft.b.peoplesist.broadcast.run(broadcast.java:90)
09-02 15:47:21.832:I/进程(1348):发送信号。PID:1348信号:9

您正在尝试在已使用的端口上绑定套接字。 在绑定新套接字之前,需要关闭绑定的套接字

如果您只是使应用程序崩溃或忘记在
onDestroy()
中调用
socket.close()
,或者在适合您的情况下调用
socket.close()
,则应用程序下的Linux系统可能需要一些时间来注意绑定的套接字已消失