2011.02.09 20:32:08
58
제가 서버에서 데이터를 받아야 하는데요
우선 첫 데이터 받는건 성공했구요,,
데이터 수신 부분을 스레드로 돌려서 받았습니다.
이것을 핸들러를 이용하여 작업을 하고 다시 데이터를 서버에 전송 합니다.
이러고 나서 다시 스레드를 이용하여서 서버에서 보내주는 데이터를 받아야 하는데,,,
서버에서는 정기적으로 보내주는 것이 아니라 비정기적으로 데이터를 전송합니다.
스레드를 무한문으로 돌려서 데이터를 받으면 스레드를 빠져나와서 핸들러로 메시지를 전송하는데
다시 핸들러에서 데이터를 받기 위해서 스레드를 거쳐야 하는데...
이게 자꾸 에러가 나는군요,,, 제 방식이 틀린건지...
스레드를 아무리 공부해 봐도 핸들러에서 다시 스레드를 호출하는게 맞는건지... 궁금합니다.
어떻게 하면 서버에서 비정기적으로 보내주는 데이터를 받을수 있는지 답변 좀 부탁드립니다..ㅜㅜ



class DownThread extends Thread{  // 데이터를 받는 스레드 부분
      String mResult;
      byte[] btRead = new byte[20];
      
      public void run(){
       try{  
        for(;;)
        {
         mResult = null;
         myTemp = null;
         in.read(btRead, 0, 20); //데이터리시브
         mResult =  new String(btRead);
         if(mResult!=null){   // 데이터를 받으면 무한반복문을 빠져 나가는 부분
          break;
         }
        }
       }catch(Exception ex){;}
       Log.e("login", mResult);
       mAfterDown.sendEmptyMessage(0);
       try{Thread.sleep(10);} catch(InterruptedException e){;}
      }
  }



Handler mAfterDown = new Handler(){     // 핸들러 부분
      public void handleMessage(Message msg){
        myTemp = mThread.mResult.split("\\|");
           if(myTemp[1].equals("#3"))
         {
          mProgress.dismiss();
            other_id.setText(myTemp[2]);                                             
          btSend = new String(myanswer).getBytes();                   // 데이터 전송 부분
          try {
        out.write(btSend, 0, btSend.length);
        out.flush();
       } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       } // 데이터 센드
      
/////////////////////// 여기서 다시 데이터를 받아야 하는데,,,, 
                        다시 스레드로 돌아가야 하는지,,, 아니면 다른 방법이 있는지점,...
                                 }