質問

私は、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いけない奇妙なAの振る舞いを得ました。私は、コンソール出力を見ると、「却下」のパケットの多くがあります。 私はパッケージの破棄、残りを記録したら、それは非常に壊れ、uncompleteパケットのように見えます。これは、例えば、文字列の途中で開始します データがサーバーから急速に送信された場合、それはしばしば起こります。サーバー側では、パケットの各々は、関連client.send()関数を呼び出すことによって送信されます。

これは入ってくる複数のオブジェクトを処理しようとする間違った方法ですか? これは、パケットを送信する原因と、サーバー側の問題だろう不完全な/不正な形式?

誰かが私を助けることができれば、私は非常に幸せになる。

リトル更新、多分これは役立ちます: 私は、ネットワークを介して送信されるデータの長さを記録し。
:|この(クライアントサーバー)のようなログに記録されたルックス 208 | 208
92 | 92
208 | 208 214 | 214&痛い、パケットが棄却しますか? Restlength :: 212
148 | r.bytesAvailable:388
27 | 388&痛い、パケットが棄却しますか? Restlength :: 384 等...

このルックスは、サーバーのバーストデータを好きで、クライアントはこれをめちゃくちゃにされています。 私はこの問題でいくつかの助けを得るために、より何を投稿できますか?私は物事が正しく動作取得するのpythonてmanualyサーバ上のデータをフラッシュする必要がありますか?私は何が起こっているのか本当にわかりません。それがために、いくつか読めないにパケットをカットするので、私は、バッファのサイズに送る、それはバッファリングを受けるように私は、非常に非常に高速)(client.sendの多くをドイグていた場合、これは主に起こることを知っているとクライアント(明らかにそれがこれを期待していないため)。私は本当にこれで立ち往生しています:(

PS:サーバは通常のチュートリアルのようなTCPソケットとクライアントスレッドとPythonで書かれている。

正しい解決策はありません

他のヒント

あなたはAMFを使用している場合は、バイナリ配列からバイトを読んでいました、なぜ

は、私は理解していない?

のRemoteObjectを使用してみて、応答ハンドラ(および最終的には、エラーハンドラ)

の例はここにあります: http://pyamf.org/tutorials/actionscript/ simple.html#ActionScriptのの (私はPythonの精通していない午前として、私は試していないもの)

それ以外は、コマンドは火であり、忘れることを覚えておいてください。 Flexでサーバー側のトラフィックに対処する上で直面する問題の大部分は、などのイベントリスナーPRを登録していないことが原因です。サーバー呼び出します。

希望は、それが役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top