遠程服務屏幕的監視
在上述代碼的基礎上,我們稍加改造,封裝成一個Servlet,便可以實現浏覽器/服務器(網站服務器培訓 郵件服務器培訓 視訊服務器培訓 )(B/S)計算結構 模式的小應用。客戶端浏覽器訪問服務器上的Servlet時候,服務器拷貝服務器屏幕,並按照contentType="Image/Jpeg"文件相應格式,將拷貝的數據按照二進制數據流的方式返回客戶端,客戶端使用浏覽器便可以查看遠程服務器的屏幕,從而實現服務器屏幕的遠程監視。
主要代碼如下:
package li;
import Javax.imageio.ImageIO;
import Java.awt.Rectangle;
import Java.awt.Robot;
import Java.awt.Toolkit;
import Java.awt.image.BufferedImage;
import Java.awt.Dimension;
import Javax.servlet.*;
import Javax.servlet.http.*;
import Java.io.*;
import Java.util.*;
public class SnapShot
extends HttpServlet
implements SingleThreadModel {
private static final String CONTENT_TYPE = "image/jpeg";
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
//設置客戶端的文件相應類型
response.setContentType(CONTENT_TYPE);
//獲取屏幕的分辨率
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
try {
{BufferedImage screenshot = (new Robot()).createScreenCapture(new
Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
String imageFormat = "jpg";
ServletOutputStream sos = response.getOutputStream();
//將圖像數據流寫入客戶端
ImageIO.write(screenshot, imageFormat, sos);
sos.close();
response.flushBuffer();
}
}
catch (Exception ex) {
}
}
//Clean up resources
public void destroy() {
}
}
運行結果如下:(以上代碼在Jbuilder10,JDevelop9 下調試成功!)
上述代碼只實現了遠程服務器屏幕的監視,如果要實現服務器"控制"也非常簡單,只要浏覽器客戶向服務器發送請求,服務器返回可客戶一包含服務器屏幕的表單,可以通過表單將客戶鼠標點擊服務器屏幕圖像的位置發送給服務器,服務器端使用Robot對象控制鼠標對象的位置與動作便可實現服務器的遠程"控制"。