专注于 ActionScript 3.0 在各应用领域的研究。
« 打怪升级D2论坛上一些演讲稿下载 »

JAVA和FLASH在SOCKET下通信.拼装数据最后转成AMF3对象

服务端发数据过来.如果数据量大.
会分为几次发送.
如果真接用读对象,会报错."遇到文件尾".
那就需要拼装数据流.在把数据流存到ByteArray中.
在利用和服务端协商数据流最后结尾的ASCII码是多少.
在边收数据边判断是不是到数据流的结尾.
如果结尾就把刚才分次读出来的数据.整理成一个AMF3对象.

具体操作如下:

客户端:FLASH

接受数据

var dataTemp:int;
internal function dataHandler(event:ProgressEvent):void{
 while(_Socket.bytesAvailable){
  var abcd:int = _Socket.readByte();
  //ASCII 126
  if(abcd == 126){
   trace("结尾")
            byte.position = 0;
   funSocket(_Socket.readByte());
  }else{
   get_Object(abcd);
        }
 }

}
 
var byte:ByteArray  = new ByteArray();
private function get_Object(obj:int):void{
 byte.objectEncoding = ObjectEncoding.AMF3;
 byte.writeByte(obj);
}

 

JAVA端:

fer buf = ByteBuffer.allocate(messageBytes.length).setAutoExpand(true);
  buf.put(messageBytes);
  byte[] temp = "~".getBytes();
  buf.put(temp);
  buf.flip();
  out.write(buf);

JAVA在数据结尾加"~".  //ASCII 126

注:因为网络提供商的关系,请将get_Object,中的下划线去掉

原文:http://blog.163.com/terry_boss/blog/static/33352262200908102220318/

  • quote 1.猫粮
  • 很2的做法,直接从服务器端返回编译后的代码用,readObject直接读出,多爽
    dmh2002 于 2010-4-17 0:19:38 回复
    你在上海?
  • 2010-4-13 22:51:20 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 Code detection by Codefense

Copyright 2008-2010 DMH2002's Blog Some Rights Reserved.沪ICP备07021739号