최근에는 팀 뷰어처럼 프로그램을 만들려고합니다. 그것은 다소 잘되고 있지만, 현재 나는 문제에 직면하고 있습니다.소켓을 통해 이미지 보내기
내 프로그램이 소켓을 통해 이미지를 보내려고합니다. 이 코드를 실행하면 "Image is 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
이미지의 길이를 소켓에 쓰지 않을 것입니다 (아마도 필요하지는 않을 것입니다). 둘째,'socket.getOutputStream()'을'BufferedOutputStream'으로 싸울 것을 제안합니다. 마지막으로 OutputStream을 닫고 (전에 플러시) 소켓을 닫았습니다. –