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;
}
}
}
HttpURLConnection을 사용하지 않기 때문에 매번 열기 및 닫기 연결을 원하지 않기 때문에 (이 프로세스에서 많은 시간이 필요했습니다. 시간 절약을 위해 하나의 소켓에 파일을 다운로드해야합니다). – Andranik
SO에 대한이 질문 (및 그것의 해답)을보십시오 : http://stackoverflow.com/q/8913085/1321873 – Rajesh
고마워요,하지만이 게시물 캔트 좀 도와주세요 – Andranik