2017-05-06 81 views
-2

服務器套接字引發此錯誤和應用程式完全崩潰。我在我的onCreate()方法中調用了這個線程。當活動第一次運行的時候,這很好,但是在完成並回到這個活動之後,出現以下錯誤。「的java.net.Socket java.net.ServerSocket.accept()」上的空對象引用

「的java.net.Socket java.net.ServerSocket.accept()」上一個空對象引用

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

你忘了單詞NullPointerException。你爲什麼沒有提到完整的信息? – greenapps

+0

因爲您可能正在獲取NetworkOnMainThreadException。 – WalterM

回答

-1

我找出錯誤和編輯我的代碼如下現在它的工作完美罰款& 。

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

你修好了嗎?你必須解釋。如果'serverSocket'爲null或者關閉,你就會無休止地循環。不好的代碼。 – EJP

相關問題