【发布时间】:2013-11-27 21:46:10
【问题描述】:
我正在尝试通过套接字从服务器下载图像。我的代码工作正常,但是当我下载图像时,大小正确但图像无法打开。我不知道我做错了什么。有什么建议吗?谢谢
Socket socket = new Socket(servername, 80);
DataOutputStream bw = new DataOutputStream(new DataOutputStream(socket.getOutputStream()));
bw.writeBytes("GET "+filename+" HTTP/1.1\n");
bw.writeBytes("Host: "+servername+":80\n\n");
DataInputStream in = new DataInputStream(socket.getInputStream());
OutputStream dos = new FileOutputStream("testtttt.jpg");
int count;
byte[] buffer = new byte[2048];
while ((count = in.read(buffer)) != -1)
{
dos.write(buffer, 0, count);
dos.flush();
}
dos.close();
System.out.println("image transfer done");
socket.close();
}
【问题讨论】:
-
您确定图片是 JPG 而不是 PNG?您也可以尝试删除 DataOutputStream 的双重包装。
-
感谢您的回复。是的,我确定图片是 JPG 格式的,我删除了 DataOutputStream 的双重包装,但它仍然只给了我图片和大小。打不开
-
不要在循环内刷新。如果你没有使用缓冲流,它什么也不做,如果你是,它完全违背了目的。没有理由不能在这里使用
URL和HttpURLConnection并完全避免所有HTTP 实现代码。