2012-01-30 4 views
0

Je dispose d'une connexion AS3 TCP Socket Client avec un serveur socket OpenFramework. Parfois, le client envoie environ 20 messages en une seconde, mais le serveur ne reçoit jamais 1 ou 2 messages.Paquets perdus de socket TCP AS3

Quelqu'un sait s'il existe un moyen sûr d'envoyer mes messages sans paquets perdus? Est-ce que je fais quelque chose de mal?

Mon code ressemble à ceci:

socket = new Socket(); 
socket.addEventListener(Event.CONNECT, connectHandler); 
socket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler); 

public function send(m:String):void 
{ 
    socket.writeUTFBytes(m); 
    socket.flush(); 
} 
+0

Etes-vous sûr que le serveur ne reçoit pas de messages? Le réseau combine de petits messages en un seul paquet et sépare les gros. Peut-être que vous ne lisez pas jusqu'à la fin ou attendez jusqu'à ce que le paquet complet arrive? –

+0

Wheres le code pour gérer le fichier de stratégie? –

+0

Ne voyez-vous pas que ce que vous faites est manifestement erroné, avez-vous essayé de surveiller le trafic en utilisant quelque chose comme wireshark ou autre? Quand il s'agit de communication réseau de niveau inférieur, ce type d'outil est inestimable. Selon les docs d'Adobe, la classe Socket utilise un canal TCP, ce qui signifie qu'elle ne devrait rien laisser tomber (si les messages UDP laissés tomber avaient du sens mais pas au-dessus de TCP qui devrait garantir la transmission fiable d'un message). help.adobe.com/fr_FR/as3/dev/WSb2ba3b1aad8a27b0-181c51321220efd9d1c-8000.html – shaunhusain

Répondre

0

Essayez plutôt celui-ci;

socket.writeUTFBytes(m + String.fromCharCode(0)); 
socket.flush();