我最近试图创建一个程序,就像teamviewer一样。它会很好,但我目前面临一个问题。通过套接字发送图像
我想让我的程序通过套接字发送图像。当我运行这段代码时,它永远不会输出“Image should be sent!”,所以我认为问题出现在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);
现在的问题是,什么是错的这个代码,我怎样才能使这项工作?
不是一个答案:你为什么不只是使用VNC?它基本上是一个没有NAT遍历的Teamviewer(所以如果你想要自己的TW,你必须在那里修改它)。但就是这样。 UltraVNC,TightVNC等等。 – Shiki
@Shiki好吧,我只是想添加其他程序没有的其他功能。有些程序可能有一些我能想到的功能,但没有一个可以。 – user2988879
我注意到你不写图像的长度与插座(也许你并不需要它);其次,我建议用'BufferedOutputStream'封装'socket.getOutputStream()'。最后,我会关闭OutputStream(并在之前刷新),关闭套接字。 –