?? pushserver.java
字號(hào):
package webgis.gpsserver;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import webgis.server.service.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
import org.jdom.*;
import javax.xml.parsers.*;
public class PushServer extends Thread{
private Log log = LogFactory.getLog("WebGIS");
private ServletContext servContext;
private ServerSocket serverSocket;
private DataOutputStream socketOutput;
private DataInputStream socketInput;
private BufferedReader keyBoardIn;
public PushServer(){
try{
serverSocket = new ServerSocket(7000);
this.servContext = servContext;
log.debug("PushServer Start...");
this.start();
}catch(Exception e){
log.error(e);
}
}
//======== 發(fā)送數(shù)據(jù)到Gps客戶端 =========
public void send(String fileName) {
String XMLString = null;
int l_iLen;
byte[] l_bMsg;
if(fileName == null) {return;}
try{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
org.w3c.dom.Document doc = db.parse(fileName);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
StringWriter sw = new StringWriter();
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
transformer.transform(new DOMSource(doc), new StreamResult(sw));
XMLString = sw.toString();
log.debug(XMLString);
l_bMsg = XMLString.getBytes();
l_iLen = l_bMsg.length;
socketOutput.writeInt(l_iLen);
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.write(l_bMsg);
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.flush();
} catch (Exception e) {log.error(e);}
log.debug("發(fā)往GPS客戶端的協(xié)議: "+XMLString);
}
private String receive() {
try {
int l_iLen; //接收的數(shù)據(jù)的長度
byte[] l_bMsg; //存放接收到的數(shù)據(jù)
String l_strXml = null; //經(jīng)過轉(zhuǎn)換的字符串?dāng)?shù)據(jù)
l_iLen = socketInput.readInt();
if (l_iLen > 0 && l_iLen < Integer.MAX_VALUE) {
if (socketInput.readByte() != 13)return null;
if (socketInput.readByte() != 10)return null;
l_bMsg = new byte[l_iLen];
for (int i = 0; i < l_iLen; i++) {
l_bMsg[i] = socketInput.readByte();
}
if (socketInput.readByte() != 13)return null;
if (socketInput.readByte() != 10)return null;
if (socketInput.readByte() != 13)return null;
if (socketInput.readByte() != 10)return null;
l_strXml = new String(l_bMsg);
}
return l_strXml;
} catch (Exception e) {log.error(e);}
return null;
}
public void run(){
while (true) {
try {
Socket socket = serverSocket.accept();
socketInput = new DataInputStream(socket.getInputStream());
keyBoardIn = new BufferedReader(new InputStreamReader(System.in));
socketOutput = new DataOutputStream(socket.getOutputStream());
while (true) {
String ProString = socketInput.readLine();
if(ProString.length() == 0)break;
log.debug(ProString);
}
socketOutput.writeBytes("HTTP/1.1 200 OK");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeBytes("Content-Type: text/html; charset=GB2312");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeBytes("Content_Length: 5");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeBytes("Date: Sun, 27 May 2008 06:32:24 GMT");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeBytes("Server: Apache Tomcat/4.0.6 (HTTP/1.1 Connector)");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeBytes("Transfer-Encoding: chunked");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeByte(13);
socketOutput.writeByte(10);
//socketOutput.flush();
socketOutput.writeBytes("5");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeBytes("aaaaa");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.writeBytes("2");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
//socketOutput.flush();
socketOutput.writeBytes("0");
socketOutput.writeByte(13);
socketOutput.writeByte(10);
socketOutput.flush();
socketOutput.close();
socketInput.close();
socket.close();
}
catch (Exception e) {log.error(e);}
}
}
public static void main(String args[]){
new PushServer();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -