眾所周知Flash的功能比較強(qiáng)大,但是有兩個(gè)功能到目前為止始終無(wú)法實(shí)現(xiàn)
- 是swf的點(diǎn)對(duì)點(diǎn)連接
- 是swf讀寫操作文件
別想了,靠Flash本身是不可能的,雖然有傳說(shuō)中的MMSave();等一些隱藏函數(shù),但是畢竟這些未公開(kāi)的函數(shù)了解的人并不多,用起來(lái)也不方便。 那么究竟有沒(méi)有其他辦法可以扶助實(shí)現(xiàn)呢?答案當(dāng)然是肯定的。在這里我們需要請(qǐng)出當(dāng)前最熱的兩門名副其實(shí)的編程語(yǔ)言C++/Java,靠他們來(lái)實(shí)現(xiàn)你要實(shí)現(xiàn)的功能吧。
在這里我用Java舉例。
首先我們必須了解 AS如何讓Java做事?對(duì)于雙方來(lái)講唯一應(yīng)用性最高的途徑就是Socket了。 AS1->XMLSocket->send()->Java.Socket->InputStream AS2->XMLSocket->send()->Java.Socket->InputStream AS3->Socket->writh()->flush()->Java.Socket->InputStream as1&2只支持以字符串形式發(fā)送socket,而as3支持真正意義上的流,在這里為了兼容和教學(xué)簡(jiǎn)單,我均以字符串形式來(lái)實(shí)現(xiàn)相互間的通信。
1->AS與Java最基本的通信
1.1 簡(jiǎn)單Java服務(wù)器
首先我們來(lái)做最簡(jiǎn)單的單線程Java服務(wù)器
import java.io.*; import java.net.*; public class Server extends ServerSocket{ //服務(wù)端口號(hào)常量(as要求必須大于1024,小于65535) private static final int SERVER_PORT = 10086; //申明流的空間 private Socket client; private BufferedReader in; private PrintWriter out; private String src; //構(gòu)造函數(shù) public Server() throws IOException{ super(SERVER_PORT); //監(jiān)聽(tīng)連接,初始流在進(jìn)來(lái)后讀取前,和寫入后發(fā)送前所存放的空間 Socket socket = accept(); in = new BufferedReader(new InputStreamReader(client.getInputStream())); out = new PrintWriter(client.getOutputStream(),true); //循環(huán)等待讀取信息 while(true){ //讀取行信息,注意是以換行符結(jié)束的 src = in.readLine(); //如果發(fā)送"close",就跳出循環(huán)(斷開(kāi)連接) if(src.equals("close")){ break; } //在收到的信息前加是標(biāo)識(shí)并發(fā)回(注意結(jié)尾加"\0",這是as的XMLSocket讀入每條信息的條件.as3的Socket不需要) out.println("rev: "+src+"\0"); //以上out.println("xx")相當(dāng)于out.write("xx");out.flush();的執(zhí)行效果 System.out.println("msg is "+src) } //關(guān)閉連接 close(); } //入口函數(shù)... public static void main (String[] args) throws IOException{ new Server(); } }
這樣一個(gè)Java的服務(wù)器就建好了,Java是同步的事件的驅(qū)動(dòng)是等待的,這個(gè)AS是不同的,所以方法對(duì)與as區(qū)別還是比較大的,具體功能已經(jīng)注釋的非常清楚。至于具體Java的特性我不是專業(yè)的,為了對(duì)讀者負(fù)責(zé)我就不做詳細(xì)介紹了,有興趣的朋友可以查閱Java相關(guān)書籍。 接下來(lái)呢就是AS的訪問(wèn)了:
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁(yè) 下一頁(yè) Flash P2P 通信技巧(AS-Java-AS) [2]
◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論
|