flash中通過XMLSocket監(jiān)控生產(chǎn)系統(tǒng)(3-2)
發(fā)表時間:2024-02-06 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]不斷向客戶端發(fā)送不同類型的有意義的XML數(shù)據(jù),模擬生產(chǎn)系統(tǒng)的不同狀態(tài)?紤]到功能的簡便性,服務(wù)端只是每2秒向客戶端發(fā)送一條隨機類型的數(shù)據(jù),而沒有包括模擬生產(chǎn)系統(tǒng)及時的狀態(tài),如在某一時刻發(fā)生錯誤時,發(fā)送一條表示錯誤類型的數(shù)據(jù),在實際設(shè)計編程中,基于本文中的例子,可以輕松擴展實現(xiàn)所需功能。 publi...
不斷向客戶端發(fā)送不同類型的有意義的XML數(shù)據(jù),模擬生產(chǎn)系統(tǒng)的不同狀態(tài)?紤]到功能的簡便性,服務(wù)端只是每2秒向客戶端發(fā)送一條隨機類型的數(shù)據(jù),而沒有包括模擬生產(chǎn)系統(tǒng)及時的狀態(tài),如在某一時刻發(fā)生錯誤時,發(fā)送一條表示錯誤類型的數(shù)據(jù),在實際設(shè)計編程中,基于本文中的例子,可以輕松擴展實現(xiàn)所需功能。
public void run() {
try {
while (true) {
System.out.println(this.getName() + "------" + i++);
d = new Date();
if(new Random().nextInt()*100 < 50){
str = "< MESSAGE TYPE=\"error\" TEXT=\"Hello, my name is Morgan!\" TIME=\"" + d.toString() + "\"/>";
} else {
str = "";
}
byte[] s= str.getBytes();
out.write(s);
out.write(0);
out.flush();
this.sleep(2000);
}
} catch (Exception ex){
ex.printStackTrace();
}
} 以上語句是自定義線程類ServerThread的run()方法,首先利用隨機數(shù)條件if語句,隨機產(chǎn)生不同類型的XML數(shù)據(jù),接著用OutputStream輸出流對象,輸出XML數(shù)據(jù)的字節(jié)數(shù)組數(shù)據(jù),為了表示該條數(shù)據(jù)已發(fā)送完成,再發(fā)送一個0字節(jié),隨后調(diào)用輸出流的flush()方法清空緩存,讓輸出流立即發(fā)送數(shù)據(jù)。最后使線程暫停2秒鐘,等線程再次執(zhí)行時,循環(huán)以上步驟。
這樣,在客戶端就可以每2秒鐘收到一條隨機類型的XML數(shù)據(jù)。詳見本文附帶的程序源碼。
在服務(wù)端,為了簡便,只是隨機向兩種類型(normal類型和error類型)的數(shù)據(jù):
< MESSAGE TYPE="error" TEXT=" 數(shù)據(jù)內(nèi)容" TIME=" + 系統(tǒng)時刻+ / >"
< MESSAGE TYPE="normal" TEXT=" 數(shù)據(jù)內(nèi)容" TIME=" + 系統(tǒng)時刻+ / >"