⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpcommunicationthread.java

📁 一个远程控制的java测试程序源代码.转于网上
💻 JAVA
字号:
/*
 * @(#)HttpCommunicationThread.java 1.00 2005-9-1
 *
 * Copyright 2005 BeanSoft Studio. All rights reserved.
 * PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package studio.beansoft.remotecontrol.client;

import java.awt.Toolkit;

import javax.swing.JOptionPane;

import studio.beansoft.net.HttpPostBean;
import studio.beansoft.remotecontrol.ConfigurationManager;
import studio.beansoft.remotecontrol.KeyEventCodec;
import studio.beansoft.remotecontrol.MouseEventCodec;
import studio.beansoft.util.logging.Logger;

/**
 * HttpCommunicationThread is a thread used to do communication
 * jobs with a HTTP host.
 * It send to the host three parameters:
 * view {true, false} (When view is true, the server will send back a image
 * of the server screen);
 * mouse_events	{event string contains mouse operations, currently
 *  only has mouse press and release events};
 * key_events{event string contains keyboard operations, currently
 *  only has key press and release events}.
 *
 * Chinese documents:
 * 用来和 HTTP 主机进行通信工作的线程.
 * 它发送到主机三个参数:
 * view {true, false}( 当 view 参数为 true 时, 服务器将返回一个服务器屏幕的图片);
 * mouse_events {包含了鼠标事件的字符串, 当前只包含鼠标按下和松开事件};
 * key_events {包含了键盘事件的字符串, 当前只包含键按下和松开事件}.
 *
 * @see studio.beansoft.remotecontrol.server.HttpMonitorServer
 * @author BeanSoft
 * @version 1.00 2005-9-1
 */
public class HttpCommunicationThread extends AbstractCommunicationThread {

	/**
	 * @see AbstractCommunicationThread#run()
	 */
	public void run() {
		while (true) {
			long startTime = System.currentTimeMillis();

			if (paused) {
				if (pane != null) {
					// Clear events that has been send 清除已发送的事件
					pane.getMouseEventQueue().clear();
					pane.getKeyEventQueue().clear();
				}

				sleepTime(1000);
				continue;
			} else if (pane == null) {
				sleepTime(1000);
				continue;
			}

			final HttpPostBean httpPostBean = new HttpPostBean();

			// The url of the remote computer to be controled 远程要控制的电脑的地址
			String remoteURL =
				ConfigurationManager.getConfiguration().getProperty(
					"remote_url_http");

			if (remoteURL == null || remoteURL.length() == 0) {
				sleepTime(1000);
				continue;
			}

			httpPostBean.setUrl(remoteURL);
			httpPostBean.setMethod("get"); // Using GET method
			httpPostBean.addParameter("view", "true");
			httpPostBean.addParameter(
				"mouse_events",
				MouseEventCodec.mouseEventToString(pane.getMouseEventQueue()));
			httpPostBean.addParameter(
				"key_events",
				KeyEventCodec.keyEventToString(pane.getKeyEventQueue()));
			// Clear events that has been send 清除已发送的事件
			pane.getMouseEventQueue().clear();
			pane.getKeyEventQueue().clear();

			if (httpPostBean.doPost()) {
				pane.setImage(
					Toolkit.getDefaultToolkit().createImage(
						httpPostBean.getResponse()));
				Logger.getLogger(this.getClass()).debug(
					"Image size: " + httpPostBean.getResponse().length);
			} else {
				setPaused(true);
				JOptionPane.showMessageDialog(
					getPane(),
					"Thread paused, because errors occurs:"
						+ new String(httpPostBean.getResponse()));
				getPane().repaint();
			}

			Logger.getLogger(this.getClass()).debug(
				"Execution time: "
					+ (System.currentTimeMillis() - startTime)
					+ "ms");

//			Make sure sleep at least 1000ms
//			startTime += 1000;
//			sleepTime(Math.max(0, startTime - System.currentTimeMillis()));
            sleepTime(1000);
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -