gpt4 book ai didi

actionscript-3 - 如何处理分两个包收到的信息

转载 作者:可可西里 更新时间:2023-11-01 02:39:54 26 4
gpt4 key购买 nike

是这样的。我想做一个游戏,客户端用 Flash 制作,服务器用 Java 制作。从服务器端,我在流中写入的第一个字节是协议(protocol) ID,如下所示:

try 
{
Output.writeByte(LOGIN);
Output.writeByte((byte)ID);
Output.writeByte(new_position.x);
Output.writeByte(new_position.y);
Output.flush();
}

'onResponse'事件触发后,socket是这样读取的:

type:int = socket_client.readByte();
if (type == 0x1)
FP.console.log("You are logged as " + socket_client.readByte() + " in x:" + socket_client.readByte() + " y:" + socket_client.readByte() );
else if (type == 0x2)
FP.console.log("You are now in x:" + socket_client.readByte() + " y:" + socket_client.readByte());

您现在可能已经猜到了,这给我带来了一些问题。有时,服务器将信息分成两部分发送,因此上述代码会抛出 EOF 异常。跟踪以下代码有时会给我这样的结果:

trace("SIZE: " + socket_client.bytesAvailable);
//var type:int = socket_client.readByte();
var values:String = "";
while (socket_client.bytesAvailable > 0)
values += socket_client.readByte() + " ";
trace(values);`

值(value)观:

 SIZE: 1
2
SIZE: 2
2 6

第一个“2”是协议(protocol) ID,第二个和第三个代表 x 和 y 值。现在,问题是,我怎样才能防止这种情况发生?我怎么能“等”到我获得所有需要的信息呢?顺便说一句,在 java 上这永远不会发生,但我没有比在 as3 上更多的控制权。

最佳答案

像这样在输出初始化中添加BufferedOutputStream:

Output = new DataOutputStream(new BufferedOutputStream(connection.getOutputStream()));

关于actionscript-3 - 如何处理分两个包收到的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13793415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com