2017-05-06 78 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

相关问题