objectoutputstream writeobject卡住

时间:2017-12-22 17:18:26

标签: java objectoutputstream

我正在研究Java中的远程控制程序,我使用套接字进行连接,ObjectOutputStreamObjectInputStream在计算机之间传输数据。

我的程序是从服务器端构建的,它处理和转发它接收的数据,客户端是连接的用户。

我正在使用Robot课程转移远程计算机的屏幕截图。这是我发送屏幕截图的方式:

public void send_screenshots() throws java.io.IOException{
  stop = false; // if the connections should stop
  screenshot_sender = new java.util.Timer();
  // screens is the connected graphicsdevices array.
  final java.awt.Robot r=new java.awt.Robot(screens[current_screen]);
  screenshot_sender.schedule(new java.util.TimerTask() {
     @Override
     public void run() {
        if (!stop) {
           try {
        outputstream.reset(); // had to write it, made too many problems (in other part of the code) when I didn't reset…
          // I convert the BufferedImage to byte[] so I will be able to write it
              outputstream.writeObject(ImagetoByteArray(r.createScreenCapture(screens[current_screen].getDefaultConfiguration().getBounds()));
           outputstream.flush();
              System.out.println("sent");
           } catch (Exception e) {
              e.printStackTrace();
           }
        } else {
           System.out.println("STOPPED SENDING SCREENSHOTS");
           cancel();
           screenshot_sender.cancel();
        }
     }
  }, 1500, 100);
}

这是有效的,直到我尝试切换到另一个屏幕,它发送3次并停止发送。我尝试将屏幕截图保存为文件(以查看它是否正确)并且没关系。我在上面代码的每一行之后添加了System.out.println("line");,代码卡在writeObject调用上。

为什么会卡住?

当客户端连接时设置输出流,如下所示:

outputstream = new java.io.ObjectOutputStream(client.getOutputStream());

0 个答案:

没有答案