事件SOCKET_DATA不接收AS3中的所有消息

时间:2011-10-13 18:38:34

标签: sockets actionscript data-loss message-loop

我的AS3客户端程序在收到大量邮件时没有收到发送给它的所有数据。我知道它不是我的服务器导致此问题,因为所有消息都被接收并正确发送。我的as3客户端只是没有收到所有数据发送。

    private function socketData(event:ProgressEvent):void {
       while(this.socket.bytesAvailable}
          var str:String = this.socket.readUTFBytes(this.socket.bytesAvailable);
          trace(str);
       }
    }

你们有没有人知道解决方案吗?

2 个答案:

答案 0 :(得分:2)

今天下午我遇到了同样的问题。最后我找到了一个解决方案: 实际上,你必须逐字节地读取消息:

private function socketData (evt:ProgressEvent):void {
    var msg:String = ""; // create a buffer
    while (socket.bytesAvailable) { // while there is byte to read
        var byte:int = socket.readByte();
        if (byte==0) { // if we read the end byte
            trace(msg); // treat your message
            msg = ""; // free the buffer
        } else {
            msg += String.fromCharCode(byte); // else, we add the byte to our buffer
        }
    }
}

我希望这会对你有所帮助:)。

答案 1 :(得分:1)

问题解决了,我只需打开路由器上的端口。