CS结构软件自动升级实现(三)
时间:2011-06-29 blogjava rochoc
AUpdSrvProc.java服务端服务线程,关键代码之一:
1/** *//********************************************************************
2 * 项目名称 :rochoc<p>
3 * 包名称 :com.rochoc.autoupdate<p>
4 * 文件名称 :AUpdSrvProc.java<p>
5 * 编写者 :kfzx-luoc<p>
6 * 编写日期 :2008-12-22<p>
7 * 程序功能(类)描述 :<p>
8 * 自动更新服务端处理进程
9 * 程序变更日期 :
10 * 变更作者 :
11 * 变更说明 :
12********************************************************************/
13package com.rochoc.autoupdate;
14
15import java.io.File;
16import java.io.FileInputStream;
17import java.io.IOException;
18import java.io.InputStream;
19import java.io.OutputStream;
20import java.io.StringReader;
21import java.net.Socket;
22import java.util.HashMap;
23
24/** *//**
25 * @author kfzx-luoc
26 *
27 * TODO To change the template for this generated type comment go to
28 * Window - Preferences - Java - Code Style - Code Templates
29 */
30public class AUpdSrvProc extends Thread
31{
32 private Socket socket = null;
33 private InputStream socketIn;
34 private OutputStream socketOut;
35 private Config config = Config.getInstance();//配置文件对像
36 private ClientVerParser cvPaser = null;
37 private HashMap cFiles = new HashMap();
38
39 byte bFlag [] = new byte[1];//标识位
40 byte bCmd[] = new byte[8];//命令
41
42 public AUpdSrvProc(Socket socket)
43 {
44 this.socket = socket;
45 }
46 /** *//**
47 * 接收客户端的升级请求,并进行处理
48 */
49 public void run()
50 {
51 try
52 {
53 config.refresh();//重新更新配置信息
54 socketIn = socket.getInputStream();
55 socketOut = socket.getOutputStream();
56 byte datahead [] = new byte[5];//数据头部,第一位用于标识是数据,后四位为长度
57 byte buffer[] = new byte[AUPD.BUFFER_SIZE];//存放数据头部和数据头部
58 byte data[] = new byte[AUPD.DATA_SIZE];//存放具体的数据内容
59 while(true)
60 {
61 //读取标志位
62 int len = socketIn.read(bFlag,0,1);
63 if(len!=1)
64 {
65 Config.print(socket.getInetAddress()+":读取标识位失败");
66 socketOut.write(Config.getCmd(AUPD.BYE));//结束
67 break;
68 }
69 if(bFlag[0]==AUPD.CMD_DATA_SECT)//命令行
70 {
71 len = socketIn.read(bCmd,0,8);
72 if(len!=8)
73 {
74 Config.print(socket.getInetAddress()+":读取命令失败,CMD="+bCmd);
75 socketOut.write(Config.getCmd(AUPD.BYE));//结束
76 break;
77 }
78
|