0

모바일 장치에서 파일을 다운로드하려고합니다. 휴대 전화는 Wi-Fi로 연결되며 경우에 따라 휴대 전화가 변경되어 다른 Wi-Fi에 연결됩니다. 다운로드의 경우, 내가 사용 : 예외없이 차단 된 다운로드

final URLConnection ucon = url.openConnection(); 
    ucon.setReadTimeout(10000); 
    ucon.setConnectTimeout(10000); 
    final InputStream inputStream = ucon.getInputStream(); 
    final BufferedInputStream bis = new BufferedInputStream(inputStream); 

그리고 bis.available()와 bis.read() 후

바이트 수를> ucon.getContentLength까지 데이터를 얻을 수().

Wi-Fi 연결이 변경되었지만 아무 것도 (IO) 예외 (또는 적어도 TimeoutException)가 예상됩니다.

다른 클래스에서는 BroadcastReceiver를 사용하여 네트워크 연결을 확인하고 정상적으로 연결이 끊어 지거나 연결되는 것을 볼 수 있습니다. 따라서 브로드 캐스트 수신기를 사용하여 다운로드를 중지했다가 다시 시작할 수 있습니다.하지만 그렇지 않다고 생각합니다. 그렇게하는 가장 좋은 방법입니다.

이 경우 예외를 얻으시겠습니까?

감사합니다.

답변

1

적어도이 경우에는 예외/오류가 발생하지 않을 수도 있습니다.

피어는 기본적으로 사용할 수 없으므로 더 이상 데이터를받지 않습니다. 데이터를 보내지 않으면 (HTTP 다운로드를 사용하면 발생하지 않음), 자신의 시간 제한을 구현하지 않는 한 아무 일도 일어나지 않습니다.

그래서 나는 네트워크 변경 이벤트를 청취하는 방법을 찾아 갈 것입니다.

또한 참고 :

, TCP 연결을 위해, 당신 (또는 OS)의 오류 만 감지 할 수 있습니다 문제 :

  • 데이터를 보내고에서 돌아 오는이 ACK되어 있지 않은 경우를 다른면
  • 상대방이 RST 또는 비슷한 것을 보내는 경우.

상대방이 없어지거나 (귀하의 경우에는 연결할 수없는 경우) 데이터를 보내지 않으면 자신의 시간 초과를 통해서만 오류를 감지 할 수 있습니다.

+0

다른 솔루션을 원한다고해도이 응답을 보내 주셔서 감사합니다. 요점은 3G 네트워크를 사용하는 경우 다른 3G 안테나에 연결하기 전에 큰 지연이 발생할 수 있으므로 다시 시작하지 않고 다운로드를 계속하는 것입니다. 또한 대역폭을 줄이려고 할 때 동일한 방식으로 Wi-Fi를 관리하기가 더 어려워집니다. <-> 3G 네트워크가 변경됩니다. :/ 마지막 솔루션으로 스트리밍 서버를 만드시겠습니까? – Kikiwa