中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁(yè) > 技術(shù)文檔 > 多媒體制作 > Flash P2P 通信技巧(AS-Java-AS)
FLASH小游戲開(kāi)發(fā) 第三節(jié) 回到列表 FLASH小游戲開(kāi)發(fā) 第二節(jié)
 Flash P2P 通信技巧(AS-Java-AS)

作者:hack86 時(shí)間: 2008-05-16 文檔類(lèi)型:原創(chuàng) 來(lái)自:藍(lán)色理想

第 1 頁(yè) Flash P2P 通信技巧(AS-Java-AS) [1]
第 2 頁(yè) Flash P2P 通信技巧(AS-Java-AS) [2]
第 3 頁(yè) Flash P2P 通信技巧(AS-Java-AS) [3]
第 4 頁(yè) Flash P2P 通信技巧(AS-Java-AS) [4]
第 5 頁(yè) Flash P2P 通信技巧(AS-Java-AS) [5]

3 AS 通過(guò)Java數(shù)據(jù)轉(zhuǎn)發(fā)實(shí)現(xiàn)P2P通信

談到這里,其實(shí)要實(shí)現(xiàn)這步就非常容易了,原理上只要將本來(lái)Java收到后返回的信息,發(fā)到別人這里去,就可以了。原理如下所示

flash_1 -> Java -> flash_2
flash_2 -> Java -> flash_3
flash_3 -> Java -> flash_1

這樣任何兩個(gè)flash之間都能通過(guò)java轉(zhuǎn)發(fā)了,現(xiàn)在只有一個(gè)問(wèn)題,就是Java怎么知道我的信息要發(fā)給誰(shuí)?其實(shí)很簡(jiǎn)單我們?cè)诿總(gè)連接連入的時(shí)候發(fā)送一條注冊(cè)信息,讓Java知道我的名字,而別人只要在字符串前加上我的名字就可以了。
那么在Java里 我們需要兩個(gè)功能

  1. 個(gè)是增加和刪除自己的標(biāo)識(shí)
  2. 是識(shí)別字符串中哪些是名字,哪些是信息

這里我們用到方法是<空格>
"r s1";這樣的一條信息過(guò)去,Java服務(wù)器要處理為該連接添加一個(gè)標(biāo)識(shí)s1,而在這以后任何客戶(hù)端只要發(fā)送
"s1 Hello";就會(huì)把"Hello"這個(gè)字符串發(fā)送給標(biāo)識(shí)為s1的客戶(hù)端,這樣兩個(gè)flash之間就完全實(shí)現(xiàn)了數(shù)據(jù)互通
"u s1";當(dāng)離開(kāi)的時(shí)候可以用這個(gè)代碼來(lái)刪除s1的標(biāo)識(shí)符
為了簡(jiǎn)單和安全,我們可以暫設(shè)為標(biāo)識(shí)必須是兩位,以字母開(kāi)頭,這樣的組合已經(jīng)超過(guò)千種,絕對(duì)夠用了。
這樣只要判斷空個(gè)所出現(xiàn)的位置即可,如果是第二位就是注冊(cè)或卸載標(biāo)識(shí),如果是第三位就是字符轉(zhuǎn)發(fā)了,如果都沒(méi)有,那就是錯(cuò)誤信息。
把上面的Run里的out.println("rev: "+src+"\0");改成以下信息就可以判斷信息是注冊(cè)還是卸載了

//屏蔽所有長(zhǎng)度小于4的信息,不做處理.
if(line.length()<4){
    out.write("error: length<4");
    out.flush();
    line = in.readLine();
    continue;
}
//命令字符
if (line.charAt(1)==' '){
    //相應(yīng)客戶(hù)端命令請(qǐng)求
    name = line.substring(2);
    switch (line.charAt(0)) {
    case 'r':
        //注冊(cè)客戶(hù)端
        if (!registered && name.length()==2){
            //為自己加一個(gè)ID
            Server.clientID.put(name,client);
            registered = true;
            //返回注冊(cè)成功
            out.write("registeration successed");
            out.flush();
        }
        break;
    case 'u':
        //刪除客戶(hù)端
        Server.clientID.remove(name);
        registered = false;
        break;
    }
}else if (line.charAt(2)==' '){
    //這里是轉(zhuǎn)發(fā)代碼;
}

當(dāng)然這里用的一些API在前面還要聲明過(guò)。在線(xiàn)程類(lèi)里增加兩條申明

private String name;
private boolean registered;

構(gòu)造函數(shù)里

registered = false;

當(dāng)然最重要的是還要在Server的主線(xiàn)程里聲明一個(gè)放ID的容器

public static HashMap clientID = new HashMap();

這樣每個(gè)連接都有自己的ID了

現(xiàn)在要做的是在轉(zhuǎn)發(fā)了,在上面的轉(zhuǎn)發(fā)代碼的地方寫(xiě)

send(line.substring(0,2),line.substring(3));
當(dāng)然send函數(shù)還沒(méi)有定義呢,現(xiàn)在定義
復(fù)制內(nèi)容到剪貼板代碼:
public boolean send(String id, String src) throws IOException {
    //讀取標(biāo)識(shí)的地址
    Socket socket = (Socket)Server.clientID.get(id);
    if (socket != null){
        out = new PrintWriter(socket.getOutputStream(), true);
        out.write(src);
        out.flush();
        return true;
    }else{
        return false;   
    }
}

這里我加入了判斷id是否存在,當(dāng)不存在就沒(méi)有任何操作,并且將操作結(jié)果成功與否返回,在send的時(shí)候就可以分類(lèi)成功或不成功分別做什么了。

馬上來(lái)開(kāi)兩個(gè)AS吧,用到我們剛才第一章節(jié)里自己封裝的as2,把加載成功的地方改成send("r c1\r");和send("r c2\r");
Action Script 2

//file1
var SERVER_PORT:Number = 10086;
var SERVER_IP:String = "127.0.0.1";
conn:Socket = new Socket();
conn.connect(SERVER_IP,SERVER_PORT);
conn.onConnect = function (success:Boolean){
    if (success){
        write("r c1");
        flush();
    }
}
//file2
var SERVER_PORT:Number = 10086;
var SERVER_IP:String = "127.0.0.1";
conn:Socket = new Socket();
conn.connect(SERVER_IP,SERVER_PORT);
conn.onConnect = function (success:Boolean){
    if (success){
        write("c2 hello");
        flush();
    }
}

依次運(yùn)行file1,file2看看,file2運(yùn)行的時(shí)候是不是成功收到了一個(gè)hello呢?嘿嘿。
這樣做雖然底層還是沒(méi)有實(shí)現(xiàn)P2P,但是效果已經(jīng)達(dá)到,如果還是覺(jué)得不夠理想,那么可以每個(gè)客戶(hù)端都綁定一個(gè)Java的ServerSocket,負(fù)責(zé)收信息,并轉(zhuǎn)發(fā)給同綁定Flash,這樣雖然沒(méi)有實(shí)現(xiàn)swf的p2p,但是在底層已經(jīng)p2p了。

資源下載

經(jīng)典論壇交流
http://bbs.blueidea.com/thread-2767774-1-1.html

本文鏈接:http://www.95time.cn/tech/multimedia/2008/5798.asp 

出處:藍(lán)色理想
責(zé)任編輯:bluehearts

上一頁(yè) Flash P2P 通信技巧(AS-Java-AS) [4] 下一頁(yè)

◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
FLASH小游戲開(kāi)發(fā) 第三節(jié)
FLASH小游戲開(kāi)發(fā) 第二節(jié)
Making Things Move 第四章
Making Things Move 第三章
自寫(xiě)類(lèi)整理筆記——Dot類(lèi)
作者文章
關(guān)于隨機(jī)打亂數(shù)組的深入研究
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門(mén)搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁(yè)制作 web標(biāo)準(zhǔn) 用戶(hù)體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開(kāi)啟
國(guó)際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國(guó)國(guó)防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問(wèn)題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀(guān)"
1499元買(mǎi)真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語(yǔ)言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡(jiǎn)單繪制一個(gè)可愛(ài)的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡(jiǎn)單的作品展示頁(yè)面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開(kāi)發(fā)項(xiàng)目
Illustrator中制作針線(xiàn)縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁(yè) 首頁(yè) 前頁(yè) 后頁(yè) 尾頁(yè) 頁(yè)次:5/5頁(yè) 1個(gè)記錄/頁(yè) 轉(zhuǎn)到 頁(yè) 共5個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來(lái)自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來(lái)自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫(huà),設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶(hù)名:  口令:
說(shuō)明:輸入正確的用戶(hù)名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無(wú)關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專(zhuān)業(yè)書(shū)推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫(xiě)給大家看的色彩書(shū)1》
《跟我去香港》
眾妙之門(mén)—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開(kāi)發(fā)寶典》
《贏(yíng)在設(shè)計(jì)》
犀利開(kāi)發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2