gpt4 book ai didi

java - 通过套接字发送图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:13 24 4
gpt4 key购买 nike

我最近正在尝试创建一个程序,就像 teamviewer 一样。一切顺利,但我目前遇到了一个问题。

我试图让我的程序通过套接字发送图像。当我运行这段代码时,它从不输出“应该发送图像!”,所以我认为问题出在 ImageIO.write 行。

BufferedImage screencapture = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
try {
ImageIO.write(screencapture, "jpg", socket.getOutputStream());
System.out.println("Image should be sent!");
} catch (IOException ex){
ex.printStackTrace();
} finally {
if ( socket != null ){
try { socket.close(); } catch (IOException ex){}
}
System.out.println("Image sent and socket closed!");
}

另一端也有一个客户端,使用上面代码发送的数据。执行此操作的代码是:

BufferedImage image = ImageIO.read(socket.getInputStream());
JLabel label = new JLabel(new ImageIcon(image));
f.getContentPane().add(label);

现在我的问题是,这段代码有什么问题,我该如何让它工作?

最佳答案

实际上代码看起来没问题。这是一个完整的代码,在我的机器上运行良好:

import java.awt.*;
import java.awt.image.BufferedImage;
import java.net.*;

import javax.imageio.ImageIO;
import javax.swing.*;

public class Server {
public static void main(String[] args) throws Exception {
BufferedImage screencapture = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
try (ServerSocket serv = new ServerSocket(25000)) {
System.out.println("waiting...");
try (Socket socket = serv.accept()) {
System.out.println("client connected");
ImageIO.write(screencapture, "jpg", socket.getOutputStream());
System.out.println("sent");
}
}
}
}

class Client {
public static void main(String[] args) throws Exception {
try(Socket socket = new Socket("localhost", 25000)){
BufferedImage image = ImageIO.read(socket.getInputStream());
JLabel label = new JLabel(new ImageIcon(image));
JFrame f = new JFrame("vnc");
f.getContentPane().add(label);
f.pack();
f.setVisible(true);
}
}
}

虽然这只有在发送图像后关闭套接字时才有效。如果您只是尝试通过同一个套接字发送一些图像,它将失败。参见 https://stackoverflow.com/a/6973863/211205 .

关于java - 通过套接字发送图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20552149/

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