明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

flash中通過XMLSocket監(jiān)控生產(chǎn)系統(tǒng)(3-2)

[摘要]不斷向客戶端發(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)時刻+ / >"