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();
}
}
}
포함됩니다에서 System.out.println()와 bf.printline를 사용하여 인쇄가 늘 수있는 문제인가? 그래서 스레드가 run 메소드를 전혀 입력하지 않았습니까? 또한 출력 스트림을 먼저 열어보십시오. Object ... Streams에 관한 Java에서 문제가 있었지만 문제가 해결 될지 확실하지 않습니다. BTW, 왜 당신은 Runnable을 사용하고 있습니까? [Thread] (http://developer.android.com/reference/java/lang/Thread.html)를 사용하고 싶습니까? –
예 소켓을 제대로 연결하면 runable을 사용하지 않더라도 출력 스트림을 먼저 호출 한 다음 입력 스트림 – Rs9766
을 호출하면 Log.v에서 결함을 알아 낸 후 System.out.println 작동을 사용합니다 – Rs9766