J'essaie d'évaluer si Flex peut accéder aux sockets binaires. Il semble qu'il y ait un appel de classe Socket (paquet flex.net). L'exigence est que Flex se connecte à un serveur desservant des données binaires. Il s'abonnera ensuite aux données et recevra le flux qu'il interprétera et affichera sous forme de tableau. Je n'ai jamais travaillé avec Flex, mon expérience repose sur Java, donc tout est nouveau pour moi. J'essaie donc de mettre rapidement quelque chose en place. Le serveur Java attend les suivantes:Socket binaire et fichier de stratégie dans Flex
DataInputStream in = .....
byte cmd = in.readByte();
int size = in.readByte();
byte[] buf = new byte[size];
in.readFully(buf);
... do some stuff and send binary data in something like
out.writeByte(1);
out.writeInt(10000);
... etc...
Flex, a besoin de se connecter à un localhost: 6666 faire la poignée de main et lire les données. Je suis quelque chose comme ceci:
try {
var socket:Socket = new Socket();
socket.connect('192.168.110.1', 9999);
Alert.show('Connected.');
socket.writeByte(108); // 'l'
socket.writeByte(115); // 's'
socket.writeByte(4);
socket.writeMultiByte('HHHH', 'ISO-8859-1');
socket.flush();
} catch (err:Error) {
Alert.show(err.message + ": " + err.toString());
}
La première chose est que Flex fait un <policy-file-request/>
. J'ai modifié le serveur pour répondre avec:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="192.168.110.1" to-ports="*" />
</cross-domain-policy>
Après cela - EOFException se produit sur le serveur et c'est tout.
Donc la question est, est-ce que j'approche tout problème de données de streaming en mauvais quand il s'agit de Flex? Suis-je en train d'envoyer le fichier de politique erroné? Malheureusement, je n'arrive pas à trouver un bon exemple de la façon de le faire. Il me semble que Flex peut faire une application client-serveur binaire, mais personnellement, je manque de connaissances de base quand je le fais. J'utilise Flex 3.5 dans IntelliJ IDE IDE.
Toute aide est appréciée.
Merci!
Vous pouvez spécifier le port lors du chargement du fichier de stratégie à l'aide de la méthode Security.loadPolicyFile. J'ai écrit un article ici http://cornelcreanga.com/2008/11/bringing-data-into-flex-applications-introduction/ –
Merci! Ça a marché. Il se connecte bien. Maintenant, je dois comprendre comment lire les données dans le socket asynchrone dans Flex. Existe-t-il un protocole de messagerie en temps réel gratuit pour Flex? Je vois qu'ils fournissent une solution commerciale, mais puis-je le faire gratuitement en quelque sorte? – Daniil