2012-09-24 5 views
2

나는 소켓을 생성하지만, 서버에서 보낸 데이터를 읽으려고 시도하자마자 멈춘다. 반면에 서비스를 사용하지 않고 있으면 같은 코드가 실행되지만 일반 활동 ??안드로이드 소켓 걸려 받기

 import android.app.*; 
     import android.content.*; 
     import android.os.*; 
     import android.util.*; 
     import java.net.*; 
     import java.io.*; 
     import android.widget.*; 




    public class BackgroundService extends Service 
      { 
        private Socket socket=null; 
        private InputStreamReader in=null; 
        private String ip; 

        private String tag="BackgroundService"; 

        public IBinder onBind(Intent p1) 
        { 
          // TODO: Implement this method 
          return null; 
        } 

      public void onCreate(){ 
        super.onCreate(); 




      } 
      public void onStart(Intent i,int id){ 
      super.onStart(i,id); 
        ip=i.getStringExtra("Ip"); 

      Log.v(tag,"Ip "+i.getStringExtra("Ip")); 
        try 
        { 
          socket = new Socket(ip.trim(), 8888); 
          new Runnable() { 

            public void run() 
            { 
//          Hangs in this block..... 
              try 
              { 
                in = new InputStreamReader (socket.getInputStream()); 
              BufferedReader bf=new BufferedReader (in); 
     //         Never Reaches this messge 
              Log.v(tag,"mess:"+bf.readLine()); 
              } 
              catch (IOException e) 
              { 
                e.printStackTrace(); 
              } 


            } 


          }.run(); 



        } 
        catch (IOException e) 
        { 
          e.printStackTrace(); 
        } 



      } 

      } 
+0

포함됩니다에서 System.out.println()와 bf.printline를 사용하여 인쇄가 늘 수있는 문제인가? 그래서 스레드가 run 메소드를 전혀 입력하지 않았습니까? 또한 출력 스트림을 먼저 열어보십시오. Object ... Streams에 관한 Java에서 문제가 있었지만 문제가 해결 될지 확실하지 않습니다. BTW, 왜 당신은 Runnable을 사용하고 있습니까? [Thread] (http://developer.android.com/reference/java/lang/Thread.html)를 사용하고 싶습니까? –

+0

예 소켓을 제대로 연결하면 runable을 사용하지 않더라도 출력 스트림을 먼저 호출 한 다음 입력 스트림 – Rs9766

+0

을 호출하면 Log.v에서 결함을 알아 낸 후 System.out.println 작동을 사용합니다 – Rs9766

답변

2

Log.v는 값이 너무 소켓이 제대로 연결 했 메시지