안드로이드 개발 질문/답변
(글 수 45,052)
Client부분의 ClientSendHandler라는 클래스의 Thread run() 부분입니다.
public void run() { String data = ""; try { while(true) { System.out.println("ENTER QUERY : "); data = this.mIn.readLine(); if(data.equals("/C")) break; this.mOut.write(data); this.mOut.flush(); //this.mOut.close(); 문제의 코드이다.
//이 부분이 없으면 data는 전송이 되지 않는다.
//하지만 mOut(BufferedWriter객체)을 close시켜버리면
//전송은 되지만, 다음번 루프에서 socket is closed라는 Exception을
//띄우고 바로 멈춰버립다. 이걸 지금 어떻게 고쳐야될지를 모르겠습다. Log.i("SUCCESS", "SEND QUERY"); } } catch (IOException e) { Log.e(this.mName + " " + e.getClass().toString(),"IOEXCEPTION(initClient) : " + e.getMessage()); } catch (Exception e) { Log.e(this.mName + " " + e.getClass().toString(), "EXCEPTION(initClient) : " + e.getMessage()); } finally { try { this.mSocket.close(); } catch (IOException e) { Log.e(this.mName + " " + e.getClass().toString(),"IOEXCEPTION(initClient) : " + e.getMessage()); } } }




그리고 제가 오히려 질문드리고 싶은게 있는데요.. 위에 close를 실행 해야 데이타가 전송된다는건 무슨 말인가요?? 소켓의 outputstream 객체를 close 시켜야 데이타가 전송된다는건 좀 잘못 이해하시는거 아닌가 합니다