rochoc
關(guān)于java、cobol、zos
BlogJava
::
首頁
::
聯(lián)系
::
聚合
::
管理
6 Posts :: 1 Stories :: 21 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的文章
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
我參與的團(tuán)隊(duì)
隨筆檔案
(6)
2009年1月 (5)
2008年12月 (1)
文章分類
(1)
COBOL
JAVA(1)
ORACLE
文章檔案
(1)
2009年1月 (1)
搜索
最新評(píng)論
1.?re: CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(一)
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--qupdater
2.?re: CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(一)
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--rochoc
3.?re: CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(一)
@ lmlm3000
下面把我已經(jīng)在Linux上測(cè)試通過的代碼放上來
--rochoc
4.?re: CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(一)
@ lmlm3000
因?yàn)榧依餂]有LINUX系統(tǒng),我周一去公司試一下,看能否解決
--rochoc
5.?re: CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(一)
關(guān)注下HttpComponents,用該包的話,使用request,header非常方便
-- lmlm3000
閱讀排行榜
1.?CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(一)(6833)
2.?CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(二) (2912)
3.?CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(三)(2594)
4.?CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(四)(2032)
5.?希望這里不要隨便清用戶(278)
評(píng)論排行榜
1.?CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(一)(18)
2.?CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(四)(2)
3.?CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(三)(1)
4.?CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(二) (0)
5.?如何讓文章出現(xiàn)在BLOGJAVA的首頁?(0)
CS結(jié)構(gòu)軟件自動(dòng)升級(jí)實(shí)現(xiàn)(二)
上次寫完(一)實(shí)現(xiàn)總體說明后,一直想把源碼放上來,但一直沒有時(shí)間,今天趁周末把這個(gè)寫完整,今天主要是附上實(shí)現(xiàn)源碼,供有需要的朋友參考,當(dāng)然也希望大家多多指教。上篇文章講到了這個(gè)實(shí)現(xiàn)是基于SOCKET實(shí)現(xiàn)的,當(dāng)然通訊協(xié)議是自定義,上一篇也有朋友說采用http協(xié)議比較簡(jiǎn)單,當(dāng)然這個(gè)也是一種方法,但要使用http協(xié)議,則服務(wù)端要有http服務(wù)這樣會(huì)導(dǎo)致服務(wù)端過于龐大。
本實(shí)現(xiàn)包括:
1、AUPD.java 服務(wù)端和客戶端之間的通訊協(xié)議
2、AutoUpdateServer.java 服務(wù)端的監(jiān)聽進(jìn)程
3、AUpdSrvProc.java服務(wù)端的服務(wù)線程,用于處理客戶端的自動(dòng)升級(jí)請(qǐng)求
4、ClientVerParser.java服務(wù)端服務(wù)線程用于解決客戶端版本信息的類
5、AutoUpdateClient.java客戶端的自動(dòng)升級(jí)請(qǐng)求進(jìn)程
6、Config.java用于服務(wù)端和客戶端讀取本地配制文件的類
7、UpdFile.java用于文件傳輸?shù)奈募?duì)像
本實(shí)現(xiàn)用dom4j作為解釋xml的引擎
AUPD.java :
1
/** */
/**
******************************************************************
2
* 項(xiàng)目名稱 :rochoc<p>
3
* 包名稱 :com.rochoc.autoupdate<p>
4
* 文件名稱 :AutoUpdProtocol.java<p>
5
* 編寫者 :kfzx-luoc<p>
6
* 編寫日期 :2008-12-22<p>
7
* 程序功能(類)描述 :<p>
8
* 定義自動(dòng)升級(jí)客戶端與服務(wù)端的通訊協(xié)議
9
* 程序變更日期 :
10
* 變更作者 :
11
* 變更說明 :
12
*******************************************************************
*/
13
package
com.rochoc.autoupdate;
14
15
/** */
/**
16
*
@author
kfzx-luoc
17
*
18
* TODO To change the template for this generated type comment go to
19
* Window - Preferences - Java - Code Style - Code Templates
20
*/
21
public
class
AUPD
22
{
23
/** */
/**
24
* 無意義操作
25
*/
26
public
static
final
String NONE
=
"
NONE
"
;
27
28
/** */
/**
29
* 發(fā)送客戶端版本信息
30
*/
31
public
static
final
String SEND_CLIENT_VERSION
=
"
SENDCVER
"
;
32
33
/** */
/**
34
* 接收客戶端版本信息
35
*/
36
public
static
final
String RECEIVED_CLIENT_VERSION
=
"
RECDCVER
"
;
37
38
/** */
/**
39
* 發(fā)送文件全路徑
40
*/
41
public
static
final
String SEND_FILE_ABSOULT
=
"
SENDFILE
"
;
42
43
/** */
/**
44
* 接收文件全路徑
45
*/
46
public
static
final
String RECEIVED_FILE_ABSOULT
=
"
RECDFILE
"
;
47
48
/** */
/**
49
* 開始文件傳輸
50
*/
51
public
static
final
String START_TRANSMIT
=
"
STARTTSM
"
;
52
53
/** */
/**
54
* 結(jié)束文件傳輸
55
*/
56
public
static
final
String TERMINATE_TRANSMIT
=
"
TERMTSMT
"
;
57
58
/** */
/**
59
* 更新失敗
60
*/
61
public
static
final
String UPDATED_FAILURE
=
"
UPDEFAIL
"
;
62
63
/** */
/**
64
* 更新成功
65
*/
66
public
static
final
String UPDATED_SUCCESSFUL
=
"
UPDESUCC
"
;
67
68
/** */
/**
69
* 無需更新
70
*/
71
public
static
final
String NOTNEED_UPDATED
=
"
NNEEDUPD
"
;
72
73
/** */
/**
74
* 已經(jīng)準(zhǔn)備好接收更新文件
75
*/
76
public
static
final
String READY_TO_UPDATE
=
"
READYTUP
"
;
77
78
/** */
/**
79
* 結(jié)束鏈接
80
*/
81
public
static
final
String BYE
=
"
BYEBYEOK
"
;
82
83
/** */
/**
84
* 數(shù)據(jù)區(qū)OFFSET
85
*/
86
public
static
final
int
DATA_OFFSET
=
5
;
87
88
/** */
/**
89
* 文件數(shù)據(jù)塊大小
90
*/
91
public
static
final
int
DATA_SIZE
=
1024
;
92
93
/** */
/**
94
* 發(fā)送緩沖區(qū)大小
95
*/
96
public
static
final
int
BUFFER_SIZE
=
DATA_SIZE
+
1
+
4
;
//
[0]位是標(biāo)志位,區(qū)分?jǐn)?shù)據(jù)和命令 + 4位長(zhǎng)度
97
98
/** */
/**
99
* 數(shù)據(jù)段標(biāo)識(shí)
100
*/
101
public
static
final
int
MARK_DATA_SECT
=
0
;
102
/** */
/**
103
* 命令段標(biāo)識(shí)
104
*/
105
public
static
final
int
CMD_DATA_SECT
=
1
;
106
107
/** */
/**
108
* 數(shù)據(jù)段結(jié)束標(biāo)識(shí)
109
*/
110
public
static
final
int
MARK_DATA_END
=
127
;
111
}
112
AutoUpdateServer.java :
1
/** */
/**
******************************************************************
2
* 項(xiàng)目名稱 :rochoc<p>
3
* 包名稱 :com.rochoc.autoupdate<p>
4
* 文件名稱 :AutoUpdateServer.java<p>
5
* 編寫者 :kfzx-luoc<p>
6
* 編寫日期 :2008-12-22<p>
7
* 程序功能(類)描述 :<p>
8
* 自動(dòng)更新服務(wù)端
9
* 程序變更日期 :
10
* 變更作者 :
11
* 變更說明 :
12
*******************************************************************
*/
13
package
com.rochoc.autoupdate;
14
15
import
java.io.IOException;
16
import
java.net.ServerSocket;
17
import
java.net.Socket;
18
19
/** */
/**
20
*
@author
kfzx-luoc
21
*
22
* TODO To change the template for this generated type comment go to
23
* Window - Preferences - Java - Code Style - Code Templates
24
*/
25
public
class
AutoUpdateServer
extends
Thread
26
{
27
private
int
port
=
0
;
//
服務(wù)端口號(hào)
28
private
Config config
=
Config.getInstance();
//
配置文件對(duì)像
29
private
ServerSocket srvSocket
=
null
;
30
public
AutoUpdateServer()
31
{
32
port
=
Integer.parseInt(config.getServerPort());
33
try
34
{
35
srvSocket
=
new
ServerSocket(port);
36
//
setTimeout(60000);
37
this
.start();
38
Config.print(
"
自動(dòng)更新服務(wù)器在端口'
"
+
port
+
"
'監(jiān)聽
"
);
39
}
catch
(IOException e)
40
{
41
e.printStackTrace();
42
}
43
}
44
void
setTimeout(
int
millis)
throws
IOException
45
{
46
if
(srvSocket
!=
null
)
47
{
48
srvSocket.setSoTimeout(millis);
49
}
50
}
51
void
close()
throws
IOException
52
{
53
if
(srvSocket
!=
null
)
54
{
55
srvSocket.close();
56
}
57
}
58
/** */
/**
59
*
@author
kfzx-luoc
60
*
61
* 執(zhí)行監(jiān)聽處理,如果有客戶端連接上來,則判斷是否需要更新,
62
* 如果需要更新,則給客戶端傳送最新版本文件
63
*/
64
public
void
run()
65
{
66
try
67
{
68
while
(
true
)
69
{
70
Socket clSocket
=
null
;
71
try
72
{
73
clSocket
=
srvSocket.accept();
74
Config.print(
"
客戶端‘
"
+
clSocket.getInetAddress()
+
"
’連接成功
"
);
75
//
進(jìn)行處理
76
AUpdSrvProc srvP
=
new
AUpdSrvProc(clSocket);
77
srvP.start();
78
}
catch
(IOException ioe)
79
{
80
try
81
{
82
clSocket.close();
83
}
catch
(IOException e1)
84
{
85
}
86
Config.print(
"
AutoUpdateServer proc client:
"
+
clSocket.getInetAddress().getHostAddress()
+
"
error,
"
+
ioe);
87
ioe.printStackTrace();
88
}
89
}
90
}
catch
(Exception e)
91
{
92
Config.print(
"
AutoUpdateServer running error,
"
+
e);
93
e.printStackTrace();
94
}
finally
95
{
96
try
97
{
98
srvSocket.close();
99
}
catch
(IOException e)
100
{
101
}
102
}
103
}
104
//
測(cè)試主函數(shù)
105
public
static
void
main(String args[])
106
{
107
AutoUpdateServer server
=
new
AutoUpdateServer();
108
server.run();
109
}
110
}
111
避免太大,其他源碼見(三)
運(yùn)行服務(wù)端:
java -cp .;.\bin;.\lib\dom4j-1.6.1.jar;.\lib\jaxen-1.1-beta-4.jar com.icbc.autoupdate.AutoUpdateServer
運(yùn)行客戶端:
java -cp ./bin;./lib/jaxen-1.1-beta-4.jar;./lib/dom4j-1.6.1.jar; com.icbc.autoupdate.AutoUpdateClient
posted on 2009-01-09 21:18
rochoc
閱讀(2912)
評(píng)論(0)
編輯
收藏
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Copyright @ rochoc
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
主站蜘蛛池模板:
性一交一乱一视频免费看
|
今天免费中文字幕视频
|
成人免费a级毛片
|
亚洲欧洲国产视频
|
99re热精品视频国产免费
|
亚洲人成电影在线天堂
|
97精品免费视频
|
亚洲国产成人va在线观看网址
|
在线看片v免费观看视频777
|
日本在线观看免费高清
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
偷自拍亚洲视频在线观看99
|
国产成人免费永久播放视频平台
|
亚洲国产成人久久一区二区三区
|
成年女人毛片免费视频
|
黄色毛片免费网站
|
亚洲自偷自偷偷色无码中文
|
9420免费高清在线视频
|
亚洲精品无码久久久久YW
|
免费一级e一片在线播放
|
国产在线播放线91免费
|
亚洲综合图片小说区热久久
|
青青视频观看免费99
|
色噜噜噜噜亚洲第一
|
老司机亚洲精品影视www
|
久久免费精彩视频
|
亚洲人成人伊人成综合网无码
|
亚洲黄片毛片在线观看
|
84pao国产成视频免费播放
|
日本亚洲色大成网站www久久
|
亚洲另类精品xxxx人妖
|
国产在线19禁免费观看国产
|
久久精品国产免费观看
|
国产精品亚洲精品久久精品
|
亚洲精品午夜无码电影网
|
69堂人成无码免费视频果冻传媒
|
日韩色视频一区二区三区亚洲
|
亚洲国产精品SSS在线观看AV
|
欧美大尺寸SUV免费
|
国产99久久久久久免费看
|
亚洲性69影院在线观看
|