총 게시물 39,078건, 최근 2 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

안드로이드 채팅창에 서버에서 보낸 대화내용이 바로 안떠요.

글쓴이 : pldbc 날짜 : 2018-05-06 (일) 15:32 조회 : 830
글주소 : http://www.androidside.com/B49/169806
 
  오라클자바교육센터 구로본점
안드로이드전문교육, SDK실무개발, APP개발프로젝트, 실습폰지원, 재직자환급
www.oraclejava.co.kr
  임베디드 시스템 마이크로비젼
임베디드 개발보드, 개발용역, IAR 컴파일러 총판, 에뮬레이터.
www.mvtool.co.kr
  KGIT뱅크 수강문의 전명구
안드로이드앱개발, 빅데이터, 오라클, 정보보안, IT전공대비, 국비지원수강할인.
www.hrditbank.com
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

AsyncTask 를 이용하여 서버와 클라이언트간에 간단한 채팅 구현중인데요, 서버는 pc로 보구 클라이언트는 안드로이드폰이에요. 서버에서 메세지를 보내면 안드로이드 화면에서 근처에 버튼을 누르거나 edittext란에 한번 클릭을 하는등 다른 행동(?)을 먼저 해줘야 떠요. 1:1채팅이라는게 상대편이 메시지를 보내면 다른 상대는 아무행동 필요없이
화면에 떠야하는데 마치 웹페이지 새로고침해야 변경된 내용보이듯 다른행동(?) 해줘야 화면에 내용이 뜹니다.

소스의 일부를 가져왔구요, 아래 빨간색이 데이터를 읽어와 화면에 출력하는 부분입니다.

@Override
protected Void doInBackground(Void... params) {
try{
socket = new Socket(ADDRESS, PORT); //Socket는 클라입장에서 서버의 정보.
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream( socket.getOutputStream() );
dos.writeUTF("aaaaaaaaaaa");
} catch (Exception e) {
e.printStackTrace();
}
while(true){ 
System.out.print( "Client input Message : " );
try{
String line = dis.readUTF();
testText.append(line+"\n");
} catch(Exception e){
System.out.println("Error: "+e.getMessage());
}
}
}



질문자가 자신의 포인트 5 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 4을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

안사드 2018-05-08 (화) 11:21
AsyncTask로 하시지 마시고 일반 Thread로 하시고.String line = dis.readUTF();여기에 리턴이 오는지부터 확인해보세요. 접속 되었는지도 확인하시고요.
댓글주소 추천 0 반대 0
에찌 2018-05-09 (수) 17:36
오우.. 위험한 소스시네.. 

while (true) 이부분 사용하려면 어떤 문제에도 상관없이 100% 종료되는 로직이 필요해요.
종료되는 시점은 정상적으로 됬을 떄와 catch 부분 둘다 해줘야합니다.
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기