2012-05-14 3 views
1

Я хочу загрузить несколько изображений с сервера. Я открываю сокет и загружаю первое изображение, и когда я хочу загрузить второе изображение в этом сокете, загрузка не продолжается, сокет закрывается. Мой код ниже ...Android Socket скачать несколько файлов?

общественного класса ClientThread реализует 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

Вы, кажется, загружать файлы изображений с использованием HTTP, в этом случае, было бы проще и лучше использовать HttpURLConnection.

Пример кода для загрузки изображений с помощью HttpURLConnection можно найти в этом блоге: Downloading image in Android

Вы также можете прочитать о Android's HTTP Clients в Android Developers Blog.

+0

Я не использую HttpURLConnection, потому что я не хочу, чтобы каждый раз открывать и закрывать соединение (в этом процессе требуется много времени, я хочу, чтобы файлы загрузки в одном сокете сохранялись). – Andranik

+0

Взгляните на этот вопрос (и его ответы) на SO: http://stackoverflow.com/q/8913085/1321873 – Rajesh

+0

Спасибо, но это сообщение не поможет мне – Andranik

 Смежные вопросы

  • Нет связанных вопросов^_^