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

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

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

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

ここからはActionScriptのソース:





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


public void sendData(byte[] bytes) throws Exception{
Inflater decompresser = new Inflater();
decompresser.setInput(bytes, 0, bytes.length);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
byte[] result = new byte[1024];
while(!decompresser.finished()){
int resultLength = decompresser.inflate(result);
bos.write(result,0,resultLength);
}
decompresser.end();
DataInputStream ddd = new DataInputStream(new ByteArrayInputStream(bos.toByteArray()));
try{
while(true){
System.out.println(ddd.readUTF());
}
}catch(EOFException e){
}
}

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




test.SendData

application


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

Leave a Reply

Your email address will not be published. Required fields are marked *