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;
        }
    }
}

1 ответ

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

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

Вы также можете прочитать о HTTP-клиентах Android в блоге разработчиков Android.

Другие вопросы по тегам