2017-05-06 5 views
-2

Server Socket wirft diesen Fehler und app vollständig abstürzt. Ich habe diesen Thread in meiner onCreate() -Methode aufgerufen. Wenn die Aktivität zum ersten Mal ausgeführt wird, ist es gut, aber nach dem Beenden und zurück zu dieser Aktivität wird ein Fehler angezeigt.'java.net.Socket java.net.ServerSocket.accept()' auf einem Nullobjekt Referenz

'java.net.Socket java.net.ServerSocket.accept()' auf einer Null-Objekt Referenz

private class ClientConnectionThread implements Runnable { 
     ServerSocket serversocket; 

     public ClientConnectionThread(){ 
      try{ 
       serversocket = new ServerSocket(5005); 
       serversocket.setReceiveBufferSize(1024*1024); 
       Log.v("BoardCastRunning","BoardCast Server Waiting"); 
      }catch (IOException ex){ 
       Log.v("BoardCastError",ex.toString()); 
      } 


     } 

     @Override 
     public void run() { 

      while(true){ 
       try{ 

        streamClientSocket = serversocket.accept(); 
        Log.v("BoardCast","New Connection"); 
        videoBroadcastSockets.add(streamClientSocket); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Utils.shortToast(context, 
            "Client connected from: " 
              + streamClientSocket.getInetAddress().getHostAddress() 
              + " " + streamClientSocket.getPort()); 


         } 
        }); 
       } 
       catch(IOException ex){ 
        Log.v("BoardCastError",ex.toString()); 
       } 


      } 
     } 
    } 
+1

Sie haben das Wort NullPointerException vergessen. Warum hast du die komplette Nachricht nicht erwähnt? – greenapps

+0

Weil Sie wahrscheinlich NetworkOnMainThreadException erhalten. – WalterM

Antwort

-1

finde ich den Fehler und meinen Code bearbeiten, wie unten jetzt funktioniert es völlig in Ordnung & .

private class ClientConnectionThread implements Runnable { 
     ServerSocket serversocket; 

     public ClientConnectionThread(){ 
      try{ 
       serversocket = new ServerSocket(5005); 
       serversocket.setReceiveBufferSize(1024*1024); 
       Log.v("BoardCastRunning","BoardCast Server Waiting"); 
      }catch (IOException ex){ 
       Log.v("BoardCastError",ex.toString()); 
      } 


     } 

     @Override 
     public void run() { 

      while(true){ 
       try{ 
        if(serversocket!=null){ 
         if(!serversocket.isClosed()){ 
          streamClientSocket = serversocket.accept(); 
          Log.v("BoardCast","New Connection"); 
          if(streamClientSocket!=null){ 
           videoBroadcastSockets.add(streamClientSocket); 
           runOnUiThread(new Runnable() { 
            @Override 
            public void run() { 
             Utils.shortToast(context, 
               "Client connected from: " 
                 + streamClientSocket.getInetAddress().getHostAddress() 
                 + " " + streamClientSocket.getPort()); 


            } 
           }); 
          } 

         } 
        } 


       } 
       catch(IOException ex){ 
        Log.v("BoardCastError",ex.toString()); 
       } 


      } 
     } 
    } 
+0

Sie haben es wie repariert? Du musst es erklären. Wenn 'serverSocket' null oder geschlossen ist, schleifen Sie endlos und sinnlos. Kein guter Code. – EJP

Verwandte Themen