처음 질문하는지라...부족해도 이해 부탁드립니다.


일단 안드로이드 폰에서 제가 만든 서버로 이미지 파일을 전송하는 것을 구현 했습니다. 에뮬레이터로 해봤는데 성공 했습니다.



그런데....실제 타겟으로 하니까 안되는 겁니다!!!!!!!!!!!!!!ㅠㅠ



그래서 삼가 고수님들께 도움을 받고자 질문 드립니다. 간단한 소스이니.....친절한 답변 부탁드립니다.



// 안드로이드 폰 (서버에게 이미지 파일 전송하기) - 시작


public class MuzClientExample222Activity extends Activity {

    /** Called when the activity is first created. */

private Handler mHandler;

private Socket socket;

private String html = "";

// private String name;

private BufferedReader networkReader;

private BufferedWriter networkWriter;

private PrintWriter out = null;

private BufferedReader in = null;

private String ip = "xx"; // IP

private int port = 60000; // PORT번호

private Button btn;

@Override

protected void onStop() {

// TODO Auto-generated method stub

super.onStop();

try {

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mHandler = new Handler();


        final String path

        = Environment .getExternalStorageDirectory() 

        .getAbsolutePath() + "/aaa.png";

        

        

        try {

setSocket(ip, port);

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

checkUpdate.start();

btn = (Button) findViewById(R .id .Button);

btn .setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

try {

out = new PrintWriter(new BufferedWriter(

new OutputStreamWriter(socket.getOutputStream())), true);

out.println(path);

out.flush();


DataInputStream dis = new DataInputStream(new FileInputStream(

new File(path)));

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

byte[] buf = new byte[3072];

/*while (dis.read(buf) > 0) {

dos.write(buf);

dos.flush();

}*/

while(true){

int data = dis.read(buf);

if(data == -1) break;

dos .write(buf);

}

dos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

});

       

    }

    

    public void setSocket(String ip, int port) throws IOException {

try {

socket = new Socket(ip, port);

networkWriter = new BufferedWriter(new OutputStreamWriter(

socket.getOutputStream()));

networkReader = new BufferedReader(new InputStreamReader(

socket.getInputStream()));


} catch (IOException e) {

System.out.println(e);

e.printStackTrace();

}

}

    

    private Thread checkUpdate = new Thread() {

public void run() {

try {

String line = null;

Log.w("ChattingStart", "Start Thread");

while (line == null) {


Log.w("Chatting is running", "chatting is running");

line = networkReader.readLine();

html = line;

mHandler.post(showUpdate);

}


} catch (Exception e) {

}

}

};

private Runnable showUpdate = new Runnable() {

public void run() {

Toast.makeText(MuzClientExample222Activity.this, "Coming word: " + html,

Toast.LENGTH_SHORT).show();

}

};

}


// 안드로이드 폰 (서버에게 이미지 파일 전송하기) - 끝



// 서버에서 이미지 파일 받기 (이 부분은 클아이언트가 연결 되었을때, 스레드를 띄워서, 쓰레드가 연락되게 합니다.) - 시작


public class MuzServerThread extends Thread {

private Socket socket = null;

StaveDetectionPanelActionListener muz;

BufferedImage tempImage;

GUI mygui;

FFT fft;


public MuzServerThread(Socket socket) {

super("MuzServerThread");

this.socket = socket;

}


public void run() {


try {

muz = new StaveDetectionPanelActionListener();

BufferedReader in = new BufferedReader(new InputStreamReader(

socket.getInputStream()));

String str = in.readLine();

System.out.println("수신중인 파일 이름 : " + str);

File f = new File("c:\\down2\\", str);

FileOutputStream output = new FileOutputStream(f);

byte[] buf = new byte[3072];

while (socket.getInputStream().read(buf) > 0) {

output.write(buf);

output.flush();

}

System.out.println(str + "수신완료");

tempImage = ImageIO.read(new File("c:\\down2\\" + str));


for (int i = 0; i < 1000000000; i++)

;

if (tempImage == null)

System.out.println("tempImage 인식 실패.");

else {

System.out.println("tempImage 인식 완료.");

/***

*  영상 처리 부분

*/

}

in.close();

output.close();


} catch (Exception e) {

System.out.println("서버 에러!!");

e.printStackTrace();

} finally {

try {

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

// 서버에서 이미지 파일 받기 (이 부분은 클아이언트가 연결 되었을때, 스레드를 띄워서, 쓰레드가 연락되게 합니다.) - 끝


급한지라...삼가 부탁드립니다..ㅠ