Actionscript 3 AS3,空气,插座。如何检查writeObject()传输的进度?
我正在处理AIR和Sockets,使用一个服务器应用程序和另一个作为客户端 服务器向客户端发送对象:Actionscript 3 AS3,空气,插座。如何检查writeObject()传输的进度?,actionscript-3,flash,sockets,air,Actionscript 3,Flash,Sockets,Air,我正在处理AIR和Sockets,使用一个服务器应用程序和另一个作为客户端 服务器向客户端发送对象: clientSocket.writeObject(myObject); 客户端有一个侦听器,如下所示: socket.addEventListener(ProgressEvent.SOCKET_DATA, socketData); 如何知道传入对象的大小?我需要监视这个过程,因为当传输完成时,我需要执行另一个过程 我试过这个,但不起作用: var total:int = 0; private
clientSocket.writeObject(myObject);
客户端有一个侦听器,如下所示:
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketData);
如何知道传入对象的大小?我需要监视这个过程,因为当传输完成时,我需要执行另一个过程
我试过这个,但不起作用:
var total:int = 0;
private function socketData(e:ProgressEvent) :void {
if (total == 0) {
total = socket.readInt();
}
if (socket.bytesAvailable >= total) {
trace('COMPLETE');
total = 0;
} else {
trace('progress:' + socket.bytesAvailable + ' | total: ' + total);
}
}
这篇文章在我的具体情况下不起作用:我用一个黑客破解了它: 服务器:发送对象:
clientSocket.writeObject(image);// var image:Bitmap
clientSocket.flush();
客户:
A.让侦听器接收套接字数据:
socket.addEventListener(ProgressEvent.socket_数据,socketData)代码>
B.接收字节。当所有字节都可用时,读取对象:
private var prevBytes:int = -1;
private var currentBytes:int = 0;
private function onEnterFrame(e:Event):void {
if (currentBytes == prevBytes) {
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
currentBytes = 0;
prevBytes = -1;
var obj:* = socket.readObject();
} else {
prevBytes = currentBytes;
}
trace('Current : ' + currentBytes + ' | Prev : ' + prevBytes);
}
private function socketData(e:ProgressEvent):void {
trace('on socketData : ' + currentBytes);
if (currentBytes == 0) {
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
currentBytes = socket.bytesAvailable;
}
在写入对象之后,是否执行flush()?是的,我执行flush(),并且客户端正确地接收对象。我的问题是我无法控制转移过程的进度。