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

1

本文作者:dmh2002  发布于:2009-3-17  分类:AS3 经验/技巧/游戏  点击:


服务端发数据过来.如果数据量大.
会分为几次发送.
如果真接用读对象,会报错."遇到文件尾".
那就需要拼装数据流.在把数据流存到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/

本文标签: java  AMF3  
本文Url: http://dmh2002.com/post/131.html (出自: dmh2002's Blog)
我要引用: 点击这里获取该日志的TrackBack引用地址

相关文章:

116.  [AS3]AMF3+JAVA的调用范例  (2008-9-11 23:7:16)

1 Comments

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

Write a comment ?