1
Java 소켓으로 이미지를 보내고 클라이언트와 서버가 모두 한 대의 컴퓨터에 있으면 모두 정상이지만 LAN을 통해 실행하면 결과 이미지가 검정색입니다. Robot 클래스를 사용하여 화면의 이미지를 찍은 다음 AffineTransform을 사용하여 크기를 조절합니다. 클라이언트 코드 :Java - 직렬화 가능 이미지가 소켓을 통해 전송되면 검은 색이됩니다.
BufferedImage s = null;
socket = new Socket("AJ-PC", 4444);
out = new ObjectOutputStream(socket.getOutputStream());
Robot r = new Robot();
while(true) {
s = r.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
double scale = 0.75;
int w = (int) (s.getWidth() * scale);
int h = (int) (s.getHeight() * scale);
BufferedImage outImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
AffineTransform trans = new AffineTransform();
trans.scale(scale, scale);
Graphics2D g = outImage.createGraphics();
g.drawImage(s, trans, null);
g.dispose();
Thread.sleep(400);
out.writeObject(new SerializableImage(outImage));
}
서버 코드 :
server = new ServerSocket(4444);
socket = server.accept();
System.out.println(socket);
in = new ObjectInputStream(socket.getInputStream());
while(running) {
bi = (SerializableImage) in.readObject();
b = true;
System.out.println("new");
panel.repaint();
}
SerializableImage는 JDK 이외의 클래스입니다. 그거 어디서 났어? –
빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –