마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android socket 통신 관련 질문입니다.

0 추천
안녕하세요! 날도 더운데 몸조심하시구

바로 질문 하겠습니다~

일단 socket 통신 관련 질문인데,

socket통신에서 모든 데이터를 주고 받은 후에

socket을 닫아야하는데 어떻게 닫아야할지

모르겠어서 질문합니다.

1. server에서 데이터의 끝을 알리는 문자열을 넣어서 그 값으로 소켓을 닫는다

2. client에서 어떠한 값으로(rimit,remaning 등) 처리를 할지

좋은 방안 있으면 공유 부탁드리겠습니다.

감기조심하시구 좋은 하루 되세요!
개발왕이되고싶은 (1,110 포인트) 님이 2019년 5월 14일 질문

1개의 답변

+1 추천
 
채택된 답변
클라이언트든 서버든 종료해야 하는 상황이면, socket의 close로 종료를 하면 됩니다.

데이터 끝에 문자열을 넣거나 특정 값을 넣는다는 것도 역시 종료 상황을 캐치하려고 하는건데요..

클라이언트에서 readAll()의 형태로 stream에서 데이터를 다 읽었으면 종료시키면 될 것 같습니다.
mcsong (44,040 포인트) 님이 2019년 5월 14일 답변
개발왕이되고싶은님이 2019년 5월 14일 채택됨
if (stc.read(buffer) > 0) {
                    while (buffer.remaining() > 0) {
                        buffer.flip();
                        charBuffer = decoder.decode(decrypt(buffer));
                        String success = new String(charBuffer.toString()).trim();
                        resultList1.add(success);
                        Log.e("--success--",success);

이런식으로 되어있는 곳에서 readdAll()의 형태를 쓴다는게 이해가 잘 안됩니다..ㅠㅠ 초보개발자라서요..ㅠㅠ
웬지 형태가 netty와 같은 소켓 프레임웍을 사용하는것 같네요..

stc가 소켓에서 받아온 스트림인거 같은데요..
stc.read 메세드가 읽어들인 데이터가 있는 경우에만 데이터를 읽고 처리를 하는 형태네요.. 이 경우에는 멘트하신데로 종료문자를 넣어서 처리하시는게 쉽게 처리하실 수 있는 방법입니다.
아하! 정말 감사합니다!
...