通信データ量が多いAdobe AIRアプリケーションに対して、圧縮機能を使わなくて直接データを送受信すると効率方面もよくないし、無駄なリソースも必要となりました。

ByteArray クラスは、バイトレベルでデータにアクセスする必要がある上級の ActionScript 開発者を対象としています。ByteArray クラスには、バイナリデータの読み取り、書き込み、および操作を最適化するメソッドおよびプロパティがあります。該当クラスの「compress():void」というメソッドはzlib 圧縮を使用して、バイト配列を圧縮します。

圧縮すると通信データ量も小さくとなって、スペードをアップすることができますね。以下はActionScriptとJavaの圧縮データ通信のサンプルソースコードです。

ここからはActionScriptのソース:

  1. <mx:RemoteObject id=”SendDatadestination=”SendData/
  2. <mx:Script>
  3.   <![CDATA[     
  4.     import flash.utils.*;     
  5.     private function send():void{
  6.        var testString:String =
  7.                  "Test - Alice in Wonderland";
  8.        var bytes:ByteArray = new ByteArray();
  9.         bytes.writeUTF((testString));           
  10.        bytes.compress(CompressionAlgorithm.ZLIB);                
  11.        SendData.sendData(bytes);
  12.     }     
  13.   ]]>
  14. </mx:Script>

下記はサーバ側受信用Javaソース:

  1. public void sendData(byte[] bytes) throws Exception{   
  2.   Inflater decompresser = new Inflater();
  3.   decompresser.setInput(bytes, 0, bytes.length);
  4.   ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
  5.   byte[] result = new byte[1024];
  6.   while(!decompresser.finished()){
  7.     int resultLength = decompresser.inflate(result);
  8.     bos.write(result,0,resultLength)
  9.   }
  10.   decompresser.end();           
  11.   DataInputStream ddd = new DataInputStream(new ByteArrayInputStream(bos.toByteArray()));
  12.   try{
  13.     while(true){
  14.       System.out.println(ddd.readUTF());
  15.     }
  16.   }catch(EOFException e){     
  17.   }  
  18. }

下記はremoting-config.mxlの定義例:

  1. <destination id=”SendData>
  2.     <channels>
  3.         <channel ref=”my-amf/>
  4.     </channels>
  5.     <properties>
  6.         <source>
  7.             test.SendData             
  8.         </source>
  9.         <scope>application</scope>
  10.     </properties>
  11.     <adapter ref=”java-object/>
  12. </destination>
メインコンテンツEND ■
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Posted on Saturday, 1st November 2008 by admin

Tags: , , , ,
Posted in AIR | Comments (1) | 2,731 views

One Response to “Adobe AIRアプリケーション中に圧縮機能(ZIP:ByteArray)を利用してデータを通信(ActionScriptとJava)します”

  1. FZip: ZIP読込み、作成用AS3のライブラリ | DigiTechLog Dot Com Says:

    [...] とネットの効果に影響があります。その前、Adobe AIRアプリケーション中に圧縮機能(ZIP:ByteArray)を利用してデータを通信(ActionScriptとJava)しますにアドビAIRアプリケーション中に使える圧 [...]

Leave a Reply