Question

Je vais avoir du mal à se connecter (via les classes Socket et XMLSocket) pour une écoute TCP après un délai de connexion.

J'ai un flash applet qui a besoin de maintenir une connexion TCP vers un serveur.J'ai mis en œuvre des délais d'attente à l'aide de Chronomètres, une table de ping-pong, etc.Cependant, il y a un problème.Lors de l'appel Socket.connect(), flash player (9.0.115 et de nombreux autres écuries avant) envoie 3 les demandes de connexion par paquets SYN, avec un peu de temps entre les deux.Si aucun de ceux qui ont répondu (par ex.parce que le serveur est en panne), je ne peux pas obtenir de l'applet [tenter de] se connecter au serveur.Jamais.C'est dans la durée de vie de l'applet.

Afin de clarifier et/ou de résumer:

Pour tout hôte/port paire de Socket.connect() ou XMLSocket.connect(), si l'appel échoue, tout connect() appels vers un autre Support (ou XMLSocket) les instances à l'intérieur de la durée de vie de l'applet Flash vers le même hôte/port paire ignoré.(Au moins autant que je peux dire à l'aide d'un renifleur de paquets.)

J'ai essayé d'appeler de nombreuses méthodes Socket, destroying1 et de recréer les objets, en utilisant un pool de Sockets, et de diverses autres méthodes, je ne me souviens pas en ce moment;ce fut en vain.

Ma solution actuelle est d'informer le parent de la page web par le biais d'un appel JavaScript et le laisser recharger mon applet.Ce n'est pas une jolie solution, et je ne suis pas sur pour mettre en œuvre des solutions de contournement pour les problèmes il causes, tout simplement parce que le Flash ne peut pas gérer les connexions socket correctement.

Je doit manquer quelque chose de très simple.

Des idées?

1:Je sais que vous ne pouvez pas vraiment détruire des objets;Je viens de supprimer toutes les références à eux et espérer pour le mieux.Je n'ai pas essayé d'appeler explicitement la GC dans ce cas.(Même si je pense que j'ai essayer de mettre la Douille à l'intérieur d'un Tableau et à l'aide de supprimer.)


Oui, il fonctionne comme prévu si la connexion est réussie (même si la connexion tombe plus tard.)

Le seul événement à déclencher c'est le cas lorsque le serveur ne répond pas à tous;c'est comme si Flash marques de l'hôte et le port de la combinaison est "hors ligne" et ne prend pas la peine d'envoyer tout plus de paquets pour la durée de vie de l'applet.

Je soupçonne un actif refus de la connexion (par ex.l'hôte est en ligne mais pas à l'écoute sur le port) n'est pas la cause de cela.

Je n'ai pas de message d'erreur ou de commentaires de tout autre type de la Socket.

Avez-vous jamais appelé connect() plus d'une fois le même hôte/port de la paire, lorsque la première a échoué?Comment avez-vous connu la première connexion() a échoué?Et avant les prochaines connect() appelle, avez-vous rien faire pour réinitialiser le socket?

Était-ce utile?

La solution

Cela pourrait être lié à la non-résolution du bug FP-269 qui, à son tour, peut avoir la même cause que FP-67.

Cette version devrait être résolu dans la public actuel, la version bêta trouvé sur labs.adobe.com

Edwin Wong - [09/23/08 04:49 PM ]

Je vous recommande de donner à la la dernière version bêta publique un coup de feu...

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