Question

Je suis en train d'écrire un client de jeu très simple pour obtenir un peu de pratique avec Actionscript 3 et le Flex Framework.

J'ai quelques problèmes avec le code suivant:

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

Il semble bien fonctionner dans le client la plupart du temps, mais parfois j'ai eu un comportement étrange qui ne devrait pas occure. Si je regarde dans la sortie de la console, il y a beaucoup de paquets « licenciés ». Une fois que je me suis connecté le reste mis au rebut de l'emballage, il ressemble beaucoup à un paquet cassé, uncomplete. Il commence au milieu d'une chaîne par exemple Il se produit souvent si les données sont rapidement envoyés à partir du serveur. Sur Serverside, chacun des paquets sont envoyés en appelant la fonction client.send liée ().

Est-ce la mauvaise façon d'essayer la manipulation plus d'un objet entrant? Serait-ce un problème de Serverside, ce qui provoque des paquets à envoyer malformé / incomplète?

Je serais très heureux si quelqu'un peut me aider.

Petite mise à jour, peut-être cette aide: Je me suis connecté la longueur des données envoyer sur le réseau. Le journalisés ressemble à ceci (serveur | client):
208 | 208
92 | 92
208 | 208 214 | 214 & Aïe, paquet rejeté? Restlength :: 212
148 | r.bytesAvailable: 388
27 | 388 & Aïe, paquet rejeté? Restlength :: 384 etc ...

Cela ressemble les données éclate serveur et le client est de déconner avec ça. Qu'est-ce que je pourrais poster plus pour obtenir de l'aide à ce problème? Dois-je rincer manualy de données sur le serveur python pour obtenir les choses fonctionnent correctement? Je ne suis pas vraiment sûr de ce qui se passe. Je sais que cela arrive surtout si je Doig beaucoup de client.send () très très vite, comme il se tamponne puis envoyer dans la taille de la mémoire tampon, de sorte qu'il coupe le paquet dans quelques pas lisible pour le client (car il est évident qu'il ne vous attendez pas à ce sujet). Je suis vraiment coincé avec ceci: (

PS:. Le serveur est écrit en Python avec un socket TCP tutoriel comme d'habitude et les discussions client

Pas de solution correcte

Autres conseils

Si vous utilisez l'AMF, je ne comprends pas pourquoi vous lire des octets à partir d'un tableau binaire?

Essayez d'utiliser RemoteObject, et un gestionnaire de réponse (et éventuellement également un gestionnaire d'erreur)

Il y a un exemple: http://pyamf.org/tutorials/actionscript/ Simple.html # actionscript (Que je ne l'ai pas essayé comme je suis python pas calée)

En dehors de cela, rappelez-vous que les commandes sont le feu et oublient. La majeure partie des problèmes rencontrés dans le traitement du trafic côté serveur Flex est causée par l'événement de ne pas enregistrer les auditeurs, etc. pr. appel du serveur.

it helps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top