2011-02-24 2 views
1

As Title. 내가 가진안드로이드 소켓이 좋지 않음

InputStream is = tcp.getInputStream(); 
      int bytesRead = 0; 
      do{ 
       byte[] byteIn = new byte[16* 1024]; 
       bytesRead = is.read(byteIn, 0, 16*1024); 
       pStore.storeData(byteIn, 1024); 
       processMessage(pStore.readAll()); 
       pStore.clear();    
      }while(bytesRead>0); 

문제는 그것이 while 루프의 끝에 도달하지 않을 것입니다 : 여기

는 코드입니다. 어떤 제안이라도 대단히 감사하겠습니다.

감사합니다 :) InputStream.read()

답변

3

Javadoc을 말한다 :

이 메소드는 입력 데이터 당신이보고 될 수 있습니다 무엇을 어떤

사용할 수 때까지.

먼저 읽을 데이터가 있으면 InputStream.available()으로 테스트 할 수 있습니다.

+0

아니요, 데이터를 검색하지만 루프를 벗어나지 않습니다. 그것은 루프를 통과합니다. 즉, 디버거의 명령문에 매달리지 않지만 스트림의 끝까지 도달하지 않는 것처럼 보입니다. 그것은 당신이 그것을하기로되어있는 것을 알고있는 방식으로 thats 이후 정말로 성가신 것입니다 ... – Taffy

+1

그것이 스트림의 끝에 도달했는지 알 수 없습니다. 거기에는 더 이상 존재하지 않았기 때문에 그것이 끝났음을 더 이상 나타내지 않을 데이터가 있습니다. 그것이 멈출 수있는 유일한 방법은 오류 (아마 (결국) 연결이 끊어짐)에 대한 응답입니다. –

+0

감사합니다 얘들 아, 많이 감사합니다 :) – Taffy

관련 문제