我正在尝试使用TCP / IP套接字在Flash应用程序和自定义Java服务器之间实现二进制协议,协议的消息长度可变,所以我的想法是添加一个字段,指示我拥有的字节数在解析完整的消息之前阅读,如下所示:
bytesToRead = socket.readInteger();
var bf:ByteArray;
socket.readBytes(bytesToRead);
parseMessage(bf);
所以我的问题是:如果在处理消息(supossing it complete)时其他数据通过套接字到达,则ProgressEvent.SOCKET_DATA类型的消息排队,因此调用我的处理程序的次数相等(至少在此case)到达的消息数量,或者我应该读取,直到套接字可用的所有数据?或者更简单:一般是在Flash中排队的处理程序的消息吗?
答案 0 :(得分:2)
每次套接字接收数据时都会调度ProgreeEvent.SOCKET_DATA事件。基本上每次Java服务器调用socket.write();或者socket.writeln(),你应该在ProgreeEvent.SOCKET_DATA中收到整个消息,除非你当然是在发送部分消息。
希望这能回答你的问题。