gpt4 book ai didi

java - TCP 套接字上的多个图像文件

转载 作者:可可西里 更新时间:2023-11-01 02:44:11 26 4
gpt4 key购买 nike

我正在尝试在 TCP 套接字上发送多个图像。

以下代码运行良好,没有问题:客户端和服务器交换问候语。然后客户端发送服务器接收的单个图像文件。

客户端:

...        
try {
Socket clientSocket = new Socket(serverName, port);
DataInputStream in=new DataInputStream(clientSocket.getInputStream());
System.out.println("Heard from server: "+in.readUTF());

DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
out.writeUTF("Hello from " + clientSocket.getLocalSocketAddress());

BufferedImage bimg;

// for (int i=0; i<3; i++) {
bimg = ImageIO.read(new File("flowers.jpg"));
ImageIO.write(bimg,"jpg",clientSocket.getOutputStream());
out.flush();
System.out.println("Image sent");
// }
clientSocket.close();
} catch(Exception e) { ... }

服务器端:

...
Socket socket=null;
DataInputStream din=null;
DataOutputStream dout=null;
...
socket = serverSocket.accept();
din=new DataInputStream(socket.getInputStream());
dout=new DataOutputStream(socket.getOutputStream());

for (;;) {
try {

dout.writeUTF("ImageReceiver here at your service: ");

System.out.println("from the client: "+din.readUTF());
BufferedImage img;

//for (int i=0; i<3; i++) {
img=ImageIO.read(socket.getInputStream());
ImageIO.write(img, "png", new File(timeStamp+"img.png"));
System.out.println("Image received...");
//}
socket.close();
break;
}
catch(Exception e) { .... }
}

当我取消注释上面的 2*2 行并因此在循环中发送和接收图像时,我得到一个图像为空的异常:

服务器正在接收第一个图像,没有错误。然而,在那之后,它不将输入流视为图像。在

调用 ImageIO.read()
img=ImageIO.read(socket.getInputStream());    

返回 null 和

        ImageIO.write(img, "png", new File(timeStamp+"img.png"));

抛出异常。

客户端进程运行良好,没有任何错误。

这是管理 I/O 缓冲区的问题吗?

去哪里修复它?

TIA。

//=======================================

当我发送 2 张图片时,我遇到了同样的错误:第一张图片传输和接收正常。

客户端正在发送第二张图片作为关闭前的最后一件事。但是,服务器没有将第二个视为图像。第一个图像传输后,服务器套接字的输入缓冲区中没有任何内容,只有第二个图像。

最佳答案

ImageIO 在读取图像后关闭输入流。它需要使用 ImageIO.createImageInputStream() 一次又一次地创建以读取多个图像。 你可以在这里看到它- https://docs.oracle.com/javase/8/docs/api/javax/imageio/ImageIO.html#read-javax.imageio.stream.ImageInputStream-

关于java - TCP 套接字上的多个图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com