我想写一个很朴实的游戏客户端,以获得一些实践与ActionScript 3的和Flex框架。

我有一些问题如下代码:

private function readResponse():void {
   var r:ByteArray =  new ByteArray();
   readBytes(r);
   while (r.bytesAvailable != 0)
   {
    try
    {
     var d:Object = r.readObject();
     protocol.execute(d); // do something with the object
    }
    catch (RangeError)
    {
     trace("Ouch, packet dismissed? Restlength:" + r.bytesAvailable);
    }
   }
  }

这似乎在客户端的大部分时间很好地工作,但有时我得到奇怪的行为不应该occure。如果我在控制台输出看,有许多“驳回”的数据包。 一旦我登录的包丢弃的休息,很看起来像一个坏了,uncomplete包。它开始在一个字符串中间例如 它如果数据从服务器发送迅速经常发生。服务器端上,每个分组是通过调用相关client.send()函数发送。

这是错误的方式来尝试处理多个对象传入? 难道这是一个服务器端的问题,导致数据包被发送畸形的/不完整?

我将非常高兴,如果有人可以帮助我。

小更新,也许这会有所帮助: 我记录数据的长度在网络上发送。 记录的这个样子的(服务器|客户端):点击 208 | 208个结果 92 | 92个结果 208 | 208 214 | 214哎哟,包驳回? Restlength :: 212结果 148 | r.bytesAvailable:388点击 27 | 388哎哟,包被解雇? Restlength :: 384 等...

这看起来像服务器突发数据和客户端是搞乱与此有关。 可我张贴的内容更多的得到一些帮助这个问题?我一定要冲洗数据manualy蟒蛇服务器上把事情做好工作?我真的不知道发生了什么。我只知道,出现这种情况主要是,如果我DOIG很多client.send(的)非常非常快的,像它得到缓冲,然后在缓冲区的大小发送,所以它减少了数据包到几个不可读的客户端(因为很明显它没有想到这一点)。我真的坚持了这一点:(

PS:服务器被写入在Python与通常的教程状TCP套接字和客户线程

没有正确的解决方案

其他提示

如果您使用的是AMF,我不明白你为什么会从一个二进制数组读取的字节?

尝试使用的RemoteObject,和一个响应处理器(并且最终还一个错误处理程序)

这里有一个例子: http://pyamf.org/tutorials/actionscript/ simple.html#动作 (我正如我不精明蟒没试过)

除此之外,记住,命令是火和忘记。在处理与Flex服务器端通信遇到的问题的主要部分是由未注册事件监听器等公关所致。服务器调用。

希望它帮助

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top