2010-11-30 5 views
0

Je rencontre un problème lors de l'utilisation de sockets dans Flash Builder 4. Le code ci-dessous envoie un ensemble d'octets à un cbox sockerServer de réception. Si je rejette l'erreur que je reçois dans Flash Builder manuellement, les octets sont envoyés correctement et tout se passe comme prévu sur 127.0.0.1:10. Maintenant, si je pouvais juste obtenir les mêmes résultats sans une erreur affichée dans Flex.Problèmes liés à Flex - Socket.close() (# 2031: Erreur de socket)

Donc, j'ai deux questions:

1) Pourquoi il renvoie une erreur lorsque je tente de fermer le socket? Voir closeConnection() ci-dessous pour le contexte. J'ai essayé de le rincer juste avant, ce qui n'a pas aidé.

2) Pourquoi rien n'est envoyé lorsque j'utilise socket.flush()?

package 
{ 
import flash.events.IOErrorEvent; 
import flash.net.Socket; 
import flash.utils.ByteArray; 

public class socketClient 
{ 
    private var socket:Socket; 
    public function openConnection(address:String, port:int):void 
    { 
     if (socket != null && socket.connected) 
      socket.close(); 

     socket = new Socket(); 
     try { 
      socket.connect(address, port);    
     } 
     catch(e:Error) { }    
    } 
    public function sendProtocol(p:socketProtocol):void { 
     //p.serialize() gets me a bunch of bytes in a ByteArray 
     var buffer:ByteArray = p.serialize(); 
     socket.writeBytes(buffer, 0, buffer.length); 
     //Nothing happens when I flush 
     socket.flush(); 
    } 
    public function closeConnection():void { 
     //As soon as I get to socket.close(), I get this 
     //"Unhandled IOErrorEvent:. text=Error #2031: Socket Error." 
     socket.close(); 
    } 
} 

}

J'utilise la classe comme ceci:

var socket:socketClient = new socketClient(); 

//works fine, I see the connection on the server 
socket.openConnection("127.0.0.1", 10); 

//no errors, but nothing sent 
socket.sendProtocol(protocol); 

//returns the error. (if manually dismissed, data is sent) 
socket.closeConnection(); 
+0

Problème similaire: http://stackoverflow.com/questions/3645988/socket-error-sometimes –

+0

Oui, j'en ai vu un et j'ai essayé d'ajouter l'événement: IOErrorEvent. Cela ne m'a pas aidé à comprendre le problème. Je n'ai pas non plus de problème pour ouvrir la prise. Se connecte bien sur le serveur de réception. – BlueVoodoo

+0

Juste ajouté au fond. – BlueVoodoo

Répondre

0

J'ai finalement résolu après marteler celui-ci depuis que j'ai posté la question.

je dû ajouter un

socket.addEventListener(flash.events.Event.CLOSE, closeHandler) 

et faire la Socket.close() à partir de là.

Questions connexes