首页 > 解决方案 > 通过套接字将图像发送到浏览器页面

问题描述

我已经使用 Java 中的 ServerSocket 创建了一个 Web 服务器。

ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
PrintWriter os = new PrintWriter(socket.getOutputStream(), true);
os.print("HTTP/1.0 200" + "\r\n");
os.print("Content type: text/html" + "\r\n");
os.print("Content length: " + html.length() + "\r\n");
os.print("\r\n");
os.print(html + "\r\n");
os.flush();
socket.close();

现在,当请求到来时,我可以成功地将 html 页面发送到 Web 浏览器。但我无法将服务器中的图像文件显示到网页

我试过下面的代码

OutputStream outputStream = socket.getOutputStream();

BufferedImage image = ImageIO.read(file);

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", byteArrayOutputStream);

byte[] size = ByteBuffer.allocate(4).putInt(byteArrayOutputStream.size()).array();
outputStream.write(size);
outputStream.write(byteArrayOutputStream.toByteArray());
outputStream.flush();
System.out.println("Flushed: " + System.currentTimeMillis());

Thread.sleep(120000);
System.out.println("Closing: " + System.currentTimeMillis());
socket.close();

但是浏览器控制台显示错误

Failed to load resource: net::ERR_INVALID_HTTP_RESPONSE

如何在浏览器页面中显示图像

标签: javaimagesocketsjava-io

解决方案


推荐阅读