我有一个客户端服务器java程序。客户端的工作是捕获屏幕并将数据发送到服务器。它的另一个功能是打开服务器给出的网站并向服务器发送一些文本。我希望客户端在启动时运行,所以我编写了一个脚本并使用它/etc/init.d
并使用update-rc.d scriptname defaults
,然后重新启动。重新启动后,我应该收到的文本完美运行。但我无法浏览或接收客户端捕获的屏幕。
我在init.d中使用的脚本如下:
#!/bin/sh
### START INIT INFO
# Provides: suscript
# Required-Start: $remote_fs $syslog $local_fs $network
# Required-Stop: $remote_fs $syslog $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
java -jar /etc/capture/capture.jar
我以 root 身份运行客户端 jar。如何将图形数据传输到服务器?
答案1
Java 有 Rectangle 类来捕获屏幕截图,因此我使用它来捕获出现在我面前的屏幕作为桌面。我想我们很可能会用它来截取 X 会话的屏幕截图。
可能有多个 X 会话(或没有),并且在任何情况下您的进程都与任何因此很难说如何考虑有任何屏幕可以捕获。仅仅因为它在连接了物理监视器的系统上运行并不意味着该进程正在该监视器上运行。正在运行在后台系统的。
如果您有办法确保进程在 X 会话中运行,您应该解释那是什么——它不会自动发生。更远:
# Required-Start: $remote_fs $syslog $local_fs $network
这些都不包含有关 X 的任何内容,并且很可能该服务将在任何 GUI 运行之前启动(请记住,启动屏幕只是一个图像,而不是 GUI)。既然如此,需要这样接口的部分就会失败。
假设您正在使用显示管理器,您将需要查看 init 系统如何安排与此相关的进程,并设置先决条件以便它启动后DM。