2012-08-14 5 views
1

저는 휴대 전화에서 SocketServer를 작동 시키려고했습니다. 나는 최근에 ICS로 업그레이드 했으므로 지금은별로 익숙하지 않은 별도의 스레드에서 네트워크 작업을해야한다. 몇 가지 코드를 작성했지만 소켓에 연결하려고하면 앱이 다운됩니다. 있습니다 내가 얻을Android SocketServer 충돌 앱

final Switch connectionSwitch = (Switch) findViewById(R.id.connectionSwitch); 
connectionSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if(isChecked) { 
     new Thread(){ 
      public void run() { 
       try { 
        serverSocket = new ServerSocket(port); 
        socket = serverSocket.accept(); 
        outToServer = new DataOutputStream(socket.getOutputStream()); 
       } catch (UnknownHostException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       while(connectionSwitch.isChecked()) { 

        myPacket[0] = (byte) 0xAA; 
        myPacket[1] = (byte) 0x01; 
        myPacket[2] = (byte) (fanFrontSpeed/256); 
        myPacket[3] = (byte) (fanFrontSpeed%256); 
        myPacket[4] = (byte) (fanLeftSpeed/256); 
        myPacket[5] = (byte) (fanLeftSpeed%256); 
        myPacket[6] = (byte) (fanRightSpeed/256); 
        myPacket[7] = (byte) (fanRightSpeed%256); 

        try { 
         outToServer.write(myPacket,0,8); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 

       try { 
        socket.close(); 
       } catch (IOException e1) { 
        e1.printStackTrace(); 
       } 
      } 
     }.start(); 
    } 
} 
}); 

오류 :에 의해 단계를 것입니다 이런 식으로 뭔가를 디버깅하는

FATAL EXCEPTION: Thread-4487 
java.lang.NullPointerException 
+0

logcat을 통해보다 구체적인 오류 텍스트를 얻을 수 있습니까? 그렇지 않으면 우리는 null이 될 수도있는 것만 추측 할 수 있습니다. – ryanbwork

+0

저는이 문제를 좀더 해결하고 문제를 해결하기 위해 outToServer.write (myPacket, 0,8)를 사용하고 있습니다. 내가 올바르게 사용하고 있지 않거나 (이전에 작동했던 writeInt를 사용하고 있었다) 또는 myPacket을 구성하는 방식이 잘못되었습니다. – user1425706

답변

0

가장 쉬운 방법은

나는 토글 온 - 오프 스위치 전환되는 ServerSocket의 시작 디버거를 밟고 아무 것도 null 인 경우 각 라인 검사를 실행하기 전에

어떤 일이 벌어 질지 : 서버 초기화 중 일부 오류가 발생합니다. UnknownHostException 또는 IOException에 걸렸습니다. outToServer == null로 코드가 전달됩니다. 초기화되지 않았으므로 언제든지 시도합니다. outToServer.write(myPacket,0,8); 널 포인터가 있습니다. 예외.

그러나 그것은 수십억 가지가 될 수 있습니다. 그것은 내가 생각할 수있는 가장 명백한 것입니다.