我最近試圖創建一個程序,就像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(並在之前刷新),關閉套接字。 –