1

Java のソケットを介して画像を送信しています。クライアントとサーバーの両方が 1 台のコンピューター上にある場合はすべて問題ありませんが、LAN 経由で実行すると結果の画像が黒くなります。Robot クラスで画面のイメージを取得し、AffineTransform で縮小します。クライアントコード:

        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();
        }
4

1 に答える 1

0

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspxの PsExec ユーティリティを使用していますが、それが問題のようです。これを使用してリモートで実行しない場合、問題なく動作します。

于 2012-06-02T19:42:31.777 に答える