国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Java和Flash通訊

2019-11-18 16:00:24
字體:
來源:轉載
供稿:網(wǎng)友

Socket(套接字技術)是一種簡單而易學的技術,尤其在當前像java這樣面向網(wǎng)絡,面向商業(yè)開發(fā)的語言的支持下,實現(xiàn)起來是相當方便的。

Flash大家都知道,在網(wǎng)絡圖像,動畫的傳輸上有著獨天得厚的優(yōu)厚優(yōu)勢,F(xiàn)lash player及其插件的高普及率。再加上一個十分強大的OO型的腳本AS2,以及它的失量圖形系統(tǒng),swf跨平臺等優(yōu)點。在短期內恐怕難有對手可以與之抗衡,而且有發(fā)展的越來越好的趨勢。

但是,F(xiàn)lash的功能究竟還是有極限的。比如,隨意的讀寫文件等基本的應用程序應有的功能都無法實現(xiàn)。在應對大規(guī)模的數(shù)據(jù)輸入的時候,用Flash比較“偏”的數(shù)據(jù)庫存取系統(tǒng)無論是開發(fā)效率和運行效率都難以有保證。

而現(xiàn)在主流的商業(yè)化,網(wǎng)絡化的OO技術,如JAVA等,在處理后臺數(shù)據(jù)要事物方面可是拿手絕活。所以,假如能利用Java等主語言寫的程序來處理數(shù)據(jù),通過數(shù)據(jù)間的傳遞補,讓Flash在前能做一個展示級的平臺的功能,一定可以讓你開發(fā)出前所未有的,無論在外還是在內都堪稱一流的直接面向網(wǎng)絡的軟件。

今天我做的嘗試有些人也已做過了,不過我這里是拿自己嘗試的體驗與大家一起來分享一下:

1.首先要知道一件事,就是能不能做的問題的,Java自不必說了。Flash方面,主要是有一個xmlSocket類,可以用來與建成服務器的應用軟件通訊.通訊的形式有兩面種,一種是用xml節(jié)點信息,比如說這樣:



在xml技術被廣泛應用的今天,這種格式更有生命力,xml在j2ee級別的應用里可以經常看到.

還有一種是相對簡單的,直接傳字符串.在小規(guī)模的程序里會比較實用.

當然啦,說到底傳的都是字節(jié)流.

在用以上兩種方式傳輸?shù)臅r候,請不要忘了,在Flash和Java端,都要加上字節(jié)流的終止符:

Flash傳給Java程序做的服務器端的信息,未尾加”/n”.

Java程序做的服務器端傳達室給Flash的信息,未尾加”/0”.

2傳完數(shù)據(jù)了,接下來就是解析了,在兩端都可以直接應用各自的字符串Api進行方便的處理。這里就不細談了。

下面簡單介紹一下我做的一個小Demo,通過Java發(fā)數(shù)據(jù)給Flash讓Flash中的一個小球從左向右移動:

import java.io.*;

import java.net.*;

public class mainServer

{

public static boolean sFlag;

public static void main(String args[])

{

try

{

ServerSocket server=null;

try

{

server=new ServerSocket(4700);

}

catch(Exception e)

{

System.out.
}

Socket socket=null;

try

{

System.out.println("Java Server Start:");

socket=server.accept();

System.out.println("client has connected/n");

}

catch(Exception e)

{

System.out.println("Error:"+e);

}

BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//*correct get the input from the client

PrintWriter os=new PrintWriter(socket.getOutputStream()); /*correct make os the output to client*/

sFlag=true;

controlThread testController=new controlThread(os);

testController.start();//啟動控制線程.

while(sFlag)

{ ;

}

System.out.println("server ends sUCcessfully!/n");

is.close();

socket.close();

server.close();

}

catch(Exception e)

{

System.out.println("Error:"+e);

}

}

}

主程序相當簡單,建立Socket服務端,并啟動一個治理線程,那好,下面就來看這個治理線程:

import java.io.*;

public class controlThread extends Thread

{

private Point controlNode;

private PrintWriter outputStream;

public controlThread(PrintWriter inOutputStream)

{

outputStream=inOutputStream;//得到要寫回的數(shù)據(jù)的對象,這里是flash客戶端.

}

public void run()

{

controlNode=new Point(180,150);

for(int i=0;i<100;i++)

{

try

{

sleep(400);

}

catch(java.lang.InterruptedException e)

{

System.out.println(e);

}

controlNode.mx=180+i*2;

outputStream.println(controlNode.toString()+"/0");

outputStream.flush();

System.out.println(controlNode.toString());

}

mainServer.sFlag=false;

}

}

通來改變一個點結點的信息,傳給Flash中的對象,用sleep函數(shù)來達到一定的延時作用,達到控制Flash對象的功能.

結點類夠簡單:

class Point

{

public int mx;

public int my;

public Point(int inX,int inY)

{

mx=inX;

my=inY;

}

public String toString()

{

return new String(mx+","+my);

}

}



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临澧县| 聂荣县| 南京市| 义马市| 凯里市| 江西省| 福安市| 乌拉特后旗| 三亚市| 浙江省| 江口县| 乌兰浩特市| 收藏| 定陶县| 甘泉县| 万全县| 凭祥市| 班戈县| 县级市| 桐梓县| 孟连| 交口县| 陇西县| 梓潼县| 鹰潭市| 庐江县| 仁布县| 大方县| 磐安县| 汉阴县| 沐川县| 四会市| 磐安县| 建德市| 邳州市| 乌拉特中旗| 上林县| 平乐县| 永春县| 宿松县| 宁南县|