echange de donnees par socket
Bonsoir,
j'utilise Flex3 AIR pour réaliser une interface graphique qui doit discuter avec un serveur via des sockets.
Coté Flex, la connexion se passe bien, l'écriture ne semble pas poser de problème.
Coté serveur, la connexion est ok, mais aucune donnée n'arrive.
En fait toutes les données émises arrivent au serveur lorsque je fait un close du socket.
Je fais un flush après chaque write, mais rien coté serveur.
Je ne sais plus quoi faire, toutes les recherches sur les forums me font dire que mon code est correct et que cela devrait fonctionner, mais hélas non.
Si quelqu'un a une idée, je suis preneur.
Merci d'avance.
Voici le code coté Flex si cela peut aider
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
<mx:Script>
<![CDATA[
import flash.errors.*;
import flash.events.*;
import flash.net.Socket;
private var s:Socket=new(Socket);
private var response:String;
private function Connect():void {
configureListeners();
s.connect("localhost", 843);
}
private function configureListeners():void {
s.addEventListener(Event.CLOSE, closeHandler);
s.addEventListener(Event.CONNECT, connectHandler);
s.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
s.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
s.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
}
private function Close():void {
s.close();
ST.text="closed";
BTConnect.enabled=true;
}
private function writeln(str:String):void {
str += "\n";
try {
s.writeUTFBytes(str);
}
catch(e:IOError) {
trace(e);
}
}
private function Send():void {
//response = "";
writeln(MSG.text);
s.flush();
}
private function readResponse():void {
var str:String = s.readUTFBytes(s.bytesAvailable);
response += str;
}
private function closeHandler(event:Event):void {
ST.text="closed by server";
BTConnect.enabled=true;
}
private function connectHandler(event:Event):void {
ST.text="connected";
BTConnect.enabled=false;
}
private function ioErrorHandler(event:IOErrorEvent):void {
ST.text="IO Erreur";
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
ST.text="Security Erreur";
}
private function socketDataHandler(event:ProgressEvent):void {
ST.text="Data to read";
}
]]>
</mx:Script>
<mx:Button x="23" y="21" label="connect" enabled="true" id="BTConnect" click="Connect();"/>
<mx:Button x="23" y="49" label="close" id="BTClose" enabled="{!BTConnect.enabled}" click="Close();"/>
<mx:Button x="356" y="83" label="Envoyer" id="BTSend" enabled="{!BTConnect.enabled}" click="Send();"/>
<mx:Label x="23" y="85" text="Texte a ecrire"/>
<mx:TextInput id='MSG' x="127" y="85" text="Text" width="186" />
<mx:Label x="23" y="144" text="Status"/>
<mx:Text id='ST' x="101" y="143" text="Not Connected" width="328"/>
</mx:WindowedApplication> |