【Java开源代码栏目提醒】:网学会员Java开源代码为您提供AJAXServer.java参考,解决您在AJAXServer.java学习中工作中的难题,参考学习。
package com.bam;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.imageio.ImageIO;
public class AJAXServer implements Runnable {
ServerSocket serverSocket;
Socket conn;
Thread clientConnection;
boolean log = AJAX_Desktop.log;
boolean logdebug = AJAX_Desktop.logdebug;
boolean loginfo = AJAX_Desktop.loginfo;
static int connections = 0;
static final Integer ZERO = new Integer(0);
static HashMap sessions = new HashMap();
private static HashMap Images = ScreenCapture.getImages();
static int chunks = ScreenCapture.getChunks();
static int count = 0;
private static int connectedPort;
private int port;
private String Service;
AJAXServer(int port, String Channel) {
this.port = port;
this.Service = Channel;
this.start();
}
/*
* 启动服务
*
* */
public void start() {
if (clientConnection == null) {
try {
// 在port端口监听连接请求
serverSocket = new ServerSocket(port);
if (loginfo) System.out.println("Listening on port: " + port);
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
clientConnection = new Thread(this);
clientConnection.start();
}
}
public void stop() {
}
public void run() {
while (clientConnection != null) {
try {
conn = serverSocket.accept();
conn.setKeepAlive(false);
conn.setReuseAddress(true);
conn.setSoLinger(false, 0);
conn.setSoTimeout(100);
new connectionHandler(conn);
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
}
/**
* 为每个连接请求开启一个线程
*
*/
class connectionHandler implements Runnable {
Socket conn;
Thread kicker = null;
BufferedInputStream instream;
String sessionID;
String str;
InetAddress address; // IP地址
connectionHandler(Socket connin) {
conn = connin;
this.address = conn.getInetAddress();
this.start();
}
/**
* 为每个连接都启动一个新的线程
*/
public void start() {
if (kicker == null) {
kicker = new Thread(this);
if (logdebug) System.out.println("New Connection Occured to: "
+ address.toString());
kicker.start();
}
}
/**
* 关闭输出流以及连接;
*/
public void stop() {
try {
conn.getOutputStream().close();
conn.close();
if (logdebug) System.out.println("Connection Terminated: "
+ address.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
kicker = null;
}
}
/**
* 线程运行
*/
public void run() {
try {
// 得到输入流
instream = new BufferedInputStream(conn.getInputStream());
} catch (Exception e) {
if (logdebug) System.out.println("kicker run: " + e);
System.exit(1);
}
if (logdebug) System.out.println("Request:");
ArrayList requestLines = new ArrayList();
// 获取请求;
do {
// 读取每行的信息
str = this.getline();
if (str != null) {
if (logdebug) System.out.println(" " + str);
requestLines.add(str);
}
} while (str != null);
if (requestLines.size()==0) return;
// 根据请求,构建一个xhtml文件
String ImportantLine = (String) requestLines.get(0);
String mimeType = "text/
xml";
byte[] data = null;
Chunk image = null;
boolean doHeader = true;
if (logdebug) System.out.println("Important Line " + ImportantLine);
if ( ImportantLine.startsWith("GET /remotedesktop.html ")) {
// 请求remotedesktop.html页面
connections++;
// 新建HashMap来存放Session信息
HashMap SessionInfo = new HashMap();
sessions.put(new Integer(connections), SessionInfo);
mimeType = "text/html";
// 用来保存
HTML中的table
StringBuffer sb = new StringBuffer();
sb.append("<table cellspacing='0' cellpadding='0'>");
for (int y = 0; y < chunks; y++) {
sb.append("<tr>\n");
for (int x = 0; x < chunks; x++) {
sb.append("<td>");
sb.append("<img src='image");
sb.append(chunks * y + x);
sb.append("_");
sb.append(connections);
sb.append("-0.")