0

我创建了自己的 java 套接字服务器,它不做 websocket 只是普通的旧套接字。我将每条消息都包裹在 0x00 和 0xFF 中。所以每条消息都以 0x00 开始,以 0xFF 结束。出于某种原因,当我偶尔从闪存读取它时,当消息大小超过 3000 字节时,我会收到乱码消息或消息丢失字符或消息不完整。这就是我在闪存中所拥有的。对此的任何指针将不胜感激。

private function onData(event:ProgressEvent):void
        {
            var obj:String;

            while(_serviceSocket.bytesAvailable > 0)
            {
                if(_serviceSocket.readByte() == START_FRAME || _currentBuffer == null)
                {
                    _currentBuffer = new ByteArray();
                }
                var byte:int;
                while(true)
                {           
                    try
                    {
                        byte = _serviceSocket.readByte();
                        if(byte == END_FRAME){
                            obj = _currentBuffer.toString();
                            processMessage(obj);
                            _currentBuffer = null;
                            break;
                        }else{
                            _currentBuffer.writeByte(byte);                             
                        }
                    }catch(e:Error){
                        obj = _currentBuffer.toString();
                        processMessage(obj);
                        _currentBuffer = null;
                        break;
                    }                       
                }
            }
        }
4

1 回答 1

0

Please try below code and check for the output

function onData(event:ProgressEvent):void{

    var data:String = "";

    var stream:ByteArray = new ByteArray();
    socket.writeBytes(stream, 0, 0);

    while(socket.bytesAvailable){
        data += socket.readUTFBytes(1);
    }

    trace("data "+ data);   

}
于 2013-04-17T06:45:14.357 回答