2012-10-29 8 views
2

저는 네트워크 프로그래밍을 처음 접했습니다.안드로이드에서 readInt()는 어떻게 작동합니까?

나는 하나의 스레드에서 실행되는 벨로우즈 소스를 가지고있다. 다른 스레드에서 나는 istream, ostreamsocket을 닫고 있지만 여전히 IOException은 아래 코드에서 인쇄됩니다. Android 휴대 전화에서이 코드를 실행하고 있습니다. 일부 Android 휴대 전화의 경우 동작이 적절하며 IOException 인 경우 다른 휴대 전화에서는 인쇄되지 않습니다.

저는 실제로 readInt()이 실제로 어떻게 작동하는지 알고 싶습니다. 어떤 핸드셋에서 IOException을 인쇄하지 않는데 문제가 될 수 있습니까?

while(true){ 
try { 
int readInt=istream.readInt(); 
} 
catch(IOException e){ 
Log.i("Sample","IOException"); 
} 
} 

답변

1

실제로 무엇을하는지 보려면 readInt() 소스를 읽을 수 있습니다. 스트림의 끝을 넘어서 읽으려고하면 항상 EOFException을 가져야합니다.

다른 스레드에서 스레드를 닫는 경우. VM이 SocketClosedException을 트리거해야하지만, 일부 안드로이드 폰이이 동작을 따르지 않을 수도 있습니다.

+0

위에 게시 된 출처에서 예외는 없습니다. 이유는 무엇일까요? – sam

+0

스트림이 비동기식으로 닫힐 때 Android 폰의 모든 버전이 IOException을 트리거하도록 보장되는지 확인합니다. 나는 그들이 그렇지 않다고 생각한다. –

+0

답을 보내 주셔서 감사합니다. http://code.google.com/p/android/issues/detail?id=7933 – sam

관련 문제