簡體   English   中英

Java套接字服務器的Flex客戶端

[英]Flex client for java socket server

我創建了自己的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;
                    }                       
                }
            }
        }

請嘗試以下代碼並檢查輸出

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);   

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM