Это то, что я до сих пор,Чтение файла изображения через Java сокет
Socket clientSocket = new Socket(HOST, PORT);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
InputStream is = socket.getInputStream();
byte[] byteChunk = new byte[1024];
int c = is.read(byteChunk);
while (c != -1){
buffer.write(byteChunk, 0, c);
c = is.read(byteChunk);
}
BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(buffer.toByteArray()));
Моя проблема с моим код ImageIO.read()
возвращает нуль.
Когда я печатаю содержание ByteArrayOutputStream
объекта, что я получаю заголовок часть
HTTP/1.1 200 OK
Date: Fri, 30 Dec 2011 11:34:19 GMT
Server: Apache/2.2.3 (Debian) ...........
Last-Modified: Tue, 20 Dec 2011 19:12:23 GMT
ETag: "502812-490e-4b48ad8d273c0"
Accept-Ranges: bytes
Content-Length: 18702
Connection: close
Content-Type: image/jpeg
следует с пустой строкой плюс множество строк с различными символами, такими как Àã$sU,e6‡Í~áŸP;Öã…
.
Снова моя проблема ImageIO.read()
функция возвращает null.
Заранее спасибо.
Поскольку вы, похоже, запрашиваете HTTP, почему бы не использовать реализацию клиента HTTP вместо сырого сокета? – fge
Мне нужно использовать сокеты для практики. –
напечатайте байты изображения и сравните их перед записью и после-чтением. если он соответствует, то в передаче нет проблем. то мы смотрим в других аспектах. –