2010-08-27 33 views
0

Bonjour Je crois que mon client Flash perd des paquets que le serveur envoie, parce que certains paquets sont assemblés, donc je crois qu'il les supprime.Comment diviser des paquets en flash, XMLSocket

Voici mon packetHandler en flash

private var xmlsock:XMLSocket; 
    this.xmlsock = new XMLSocket(); 
    xmlsock.connect("127.0.0.1", 1234); 
    this.xmlsock.addEventListener(DataEvent.DATA, this.packetHandler); 


    public function packetHandler(event:DataEvent):void { 
    var packet:String = event.data; 
    var args:Array = packet.split(":"); 
    if(args.length <= 0) return; 

    switch(args[0]) { 
    case 'w': //waiting 
    ExternalInterface.call("waiting"); 
    break; 
    case 'u': //user count 
    if(args.length >= 2) 
     ExternalInterface.call("userCount", args[1]); 
    break; 
           //... etc handlers ... 
    } 
} 

Un paquet possible, je renifla envoyé par le serveur était.

u: 105.w. aka (75 3A 31 30 35 00 77 00)

de sorte que le paquet d'attente ne sont jamais revenus dans.

Comment puis-je aller sur la fixation de ce bug .. J'utilise XMLSocket

+0

utilisez-vous un serveur personnalisé? – Eugene

+0

Pas vraiment comment pouvez-vous utiliser XMLSocket? vous construisez votre propre serveur. Mais parfois, lorsque les paquets sont vidés, ils se rejoignent en un paquet, il est donc nécessaire de les séparer par un octet nul. – SSpoke

Répondre

1

K résolu si quelqu'un a besoin d'aide cela s'avère que vous pouvez juste faire ce

paquets var: Array = data.split ("\ x00");

0

Utilisez un flash.net.Socket à la place.