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