2012-05-14 9 views
1

서버에서 여러 이미지를 다운로드하고 싶습니다. 나는 소켓을 열고 첫 번째 이미지를 다운로드하고이 소켓에서 두 번째 이미지를 다운로드하려면 다운로드를 진행하지 말고 소켓을 닫는다. 아래에 내 코드 ...Android Socket 다운로드 여러 파일이 다운로드 되었습니까?

공용 클래스 ClientThread 당신은 이미지 HTTP를 사용하여 파일,이 경우, 그것은 간단하고 HttpURLConnection를 사용하는 것이 좋을 것을 다운로드 할 것 같다의 Runnable {

public void run() { 
     try { 
      Log.d("ClientActivity", "C: Connecting..."); 
      SocketAddress sockaddr = new InetSocketAddress(serverIpAddress, SERVERPORT); 
      socket = new Socket(); 
      socket.setKeepAlive(true); 
      socket.connect(sockaddr, 5000); 
      if (socket.isConnected()) { 
       final DataInputStream input = new DataInputStream(socket.getInputStream()); 
       final PrintWriter output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); 

       output.println("GET /way/images/profile/1231 HTTP/1.1"); 
       output.println("Host: 192.168.1.2"); 
       output.println("User-Agent: Java"); 
       output.println("Accept: */*"); 
       output.println("Connection: Keep-Alive"); 
       output.println(""); 
       output.flush(); 

       String line; 
       File file = new File("/sdcard/aaa.png"); 
       if (!file.exists()) { 
        file.createNewFile(); 
       } 
       FileOutputStream fileOut = new FileOutputStream(file); 
       System.out.println("Getting first file"); 
       while ((line = input.readLine()) != null) { 
        System.out.println(line); 
        fileOut.write(line.getBytes()); 
       } 
       System.out.println("First file finished"); 
       fileOut.flush(); 
       fileOut.close(); 

       output.println("GET /way/images/profile/1231 HTTP/1.1"); 
       output.println("Host: 192.168.1.2"); 
       output.println("User-Agent: Java"); 
       output.println("Accept: */*"); 
       output.println("Connection: Keep-Alive"); 
       output.println(""); 
       output.flush(); 

       file = new File("/sdcard/aaa1.png"); 
       if (!file.exists()) { 
        file.createNewFile(); 
       } 
       fileOut = new FileOutputStream(file); 
       System.out.println("Getting second file"); 
       while ((line = input.readLine()) != null) { 
        System.out.println(line); 
        fileOut.write(line.getBytes()); 
       } 
       System.out.println("Second file finished"); 

       fileOut.flush(); 
       fileOut.close(); 
       input.close(); 
       output.close(); 
       socket.close(); 
      } 
      Log.d("ClientActivity", "C: Closed."); 
     } catch (Exception e) { 
      Log.e("ClientActivity", "C: Error", e); 
      connected = false; 
     } 
    } 
} 

답변

0

을 구현합니다. HttpURLConnection를 사용하여 이미지의 다운로드에 대한

코드 샘플이 블로그 게시물에서 찾을 수 있습니다 : 당신은 안드로이드 개발자 블로그에 대한 Android's HTTP Clients을 읽을 수 있습니다 Downloading image in Android

.

+0

HttpURLConnection을 사용하지 않기 때문에 매번 열기 및 닫기 연결을 원하지 않기 때문에 (이 프로세스에서 많은 시간이 필요했습니다. 시간 절약을 위해 하나의 소켓에 파일을 다운로드해야합니다). – Andranik

+0

SO에 대한이 질문 (및 그것의 해답)을보십시오 : http://stackoverflow.com/q/8913085/1321873 – Rajesh

+0

고마워요,하지만이 게시물 캔트 좀 도와주세요 – Andranik