Frage

Ich versuche, einen sehr einfach Spiel-Client zu schreiben einige Übung mit Actionscript 3 und dem Flex-Framework zu erhalten.

Ich habe einige Probleme mit folgendem Code:

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

Es scheint in der Client die meiste Zeit gut zu funktionieren, aber manchmal habe ich seltsam ein Verhalten, das sollte nicht occure. Wenn ich in der Konsolenausgabe aussehen, gibt es viele „entlassen“ -Pakete. Sobald ich den verworfenen Rest des Pakets angemeldet, es sieht sehr wie ein gebrochen, uncomplete Paket. Es beginnt in der Mitte einer Zeichenfolge z.B. Es kommt häufig vor, wenn Daten schnell vom Server senden werden. Auf Serverside, jedes der Pakete sind senden durch die zugehörige client.send () Funktion aufrufen.

Ist dies der falsche Weg ankommend Handhabung mehr als ein Objekt zu versuchen? Könnte dies ein server Problem sein, die Pakete verursacht send sein malformed / unvollständig?

Es würde mich sehr freuen, wenn mir jemand helfen kann.

Little Update, vielleicht hilft: Ich loggte die Länge der Daten über das Netzwerk senden. Die protokollierten sieht wie folgt aus (Server | Client):
208 | 208
92 | 92
208 | 208 214 | 214 & Aua, Paket entlassen? Restlength :: 212
148 | r.bytesAvailable: 388
27 | 388 & Aua, Paket entlassen? Restlength :: 384 etc ...

Das sieht aus wie der Server bricht Daten und der Client mit diesem vermasselt. Was könnte ich mehr schreiben etwas Hilfe bei diesem Problem zu erhalten? Habe ich flush Daten händisch auf dem Python-Server die Dinge funktionieren nicht wahr? Ich bin nicht wirklich sicher, was geschieht. Ich weiß nur, dass dies geschieht meistens, wenn ich eine Menge client.send bin doig () sehr sehr schnell, wie es gepuffert und dann in der Größe des Puffers senden, so dass er das Paket in ein paar nicht lesbar für die Schnitte Client (weil offensichtlich ist es nicht dies erwarten). Ich bin wirklich mit diesem fest: (

PS:. Der Server in Python mit einem üblichen Tutorial-wie TCP-Socket und Client-Threads geschrieben

Keine korrekte Lösung

Andere Tipps

Wenn Sie AMF verwenden, ich verstehe nicht, warum Sie Bytes aus einem binären Array lesen würden?

Versuchen RemoteObject- verwenden, und eine Antwort-Handler (und schließlich auch eine Fehlerbehandlung)

Es gibt ein Beispiel hier: http://pyamf.org/tutorials/actionscript/ simple.html # Action (Was ich habe nicht versucht, da ich nicht Python versierte bin)

Anders als das, denken Sie daran, dass Befehle Feuer und vergessen. Der größte Teil der Probleme im Umgang mit Server-Verkehr in Flex angetroffen wird durch nicht Registrierung Ereignis Zuhörer usw. pr verursacht. Serveraufruf.

Hope es hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top